├── end of #2 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── client │ ├── main.html │ ├── main.js │ └── main.css ├── server │ └── main.js ├── imports │ ├── client │ │ ├── routes.js │ │ ├── Item.js │ │ └── App.js │ └── api │ │ └── Items.js └── package.json ├── end of #3 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── client │ ├── main.html │ └── main.js ├── server │ └── main.js ├── imports │ ├── client │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ └── App.js │ └── api │ │ └── Items.js └── package.json ├── end of #5 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ └── main.js ├── server │ └── main.js ├── imports │ ├── client │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── App.js │ │ └── pages │ │ │ └── About.js │ └── api │ │ └── Items.js └── package.json ├── end of #7 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ └── main.js ├── server │ └── main.js ├── imports │ ├── client │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── App.js │ │ └── pages │ │ │ └── About.js │ └── api │ │ └── Items.js └── package.json ├── end of #8 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ └── main.js ├── imports │ ├── server │ │ └── accounts.js │ ├── client │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── App.js │ │ └── pages │ │ │ └── About.js │ └── api │ │ └── Items.js ├── server │ └── main.js └── package.json ├── end of #10 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ ├── main.js │ └── main.css ├── imports │ ├── server │ │ └── accounts.js │ ├── client │ │ ├── utilities │ │ │ └── IsRole.js │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── App.js │ │ └── pages │ │ │ └── About.js │ └── api │ │ └── Items.js ├── server │ └── main.js └── package.json ├── end of #11 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ ├── main.js │ └── main.css ├── settings.json ├── imports │ ├── server │ │ └── accounts.js │ ├── client │ │ ├── utilities │ │ │ └── IsRole.js │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── App.js │ │ └── pages │ │ │ └── About.js │ └── api │ │ └── Items.js ├── server │ └── main.js └── package.json ├── end of #14 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ ├── main.js │ └── main.css ├── settings.json ├── imports │ ├── server │ │ └── accounts.js │ ├── client │ │ ├── utilities │ │ │ └── IsRole.js │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── pages │ │ │ └── About.js │ │ └── App.js │ └── api │ │ └── Items.js ├── server │ └── main.js └── package.json ├── end of #15 ├── .gitignore ├── .meteor │ ├── .gitignore │ ├── release │ ├── platforms │ ├── .id │ ├── .finished-upgraders │ ├── packages │ └── versions ├── .babelrc ├── client │ ├── main.html │ ├── main.js │ └── main.css ├── settings.json ├── imports │ ├── server │ │ └── accounts.js │ ├── client │ │ ├── utilities │ │ │ └── IsRole.js │ │ ├── layouts │ │ │ └── MainLayout.js │ │ ├── routes.js │ │ ├── Item.js │ │ ├── pages │ │ │ └── About.js │ │ └── App.js │ └── api │ │ └── Items.js ├── server │ └── main.js └── package.json └── end of #16 ├── .gitignore ├── .meteor ├── .gitignore ├── release ├── platforms ├── .id ├── .finished-upgraders ├── packages └── versions ├── .babelrc ├── client ├── main.html └── main.js ├── settings.json ├── imports ├── server │ └── accounts.js ├── client │ ├── utilities │ │ └── IsRole.js │ ├── layouts │ │ └── MainLayout.js │ ├── routes.js │ ├── Item.js │ ├── pages │ │ └── About.js │ └── App.js └── api │ └── Items.js ├── server └── main.js └── package.json /end of #2/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #3/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #5/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #7/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #8/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #10/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #11/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #14/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #15/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #16/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /end of #2/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #3/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #5/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #7/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #8/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #10/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #11/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #14/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #15/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #16/.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /end of #2/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2 2 | -------------------------------------------------------------------------------- /end of #3/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2 2 | -------------------------------------------------------------------------------- /end of #10/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #11/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #14/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #15/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #16/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #5/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #7/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #8/.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.4.2.3 2 | -------------------------------------------------------------------------------- /end of #10/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #11/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #14/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #15/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #16/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #2/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #3/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #5/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #7/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #8/.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /end of #10/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #11/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #14/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #15/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #16/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #5/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #7/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #8/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["transform-decorators-legacy"] 3 | } 4 | -------------------------------------------------------------------------------- /end of #10/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #11/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #14/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #15/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #16/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #2/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #3/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #5/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #7/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #8/client/main.html: -------------------------------------------------------------------------------- 1 | 2 | React Meteor Voting 3 | 4 | 5 |
6 | 7 | -------------------------------------------------------------------------------- /end of #8/imports/server/accounts.js: -------------------------------------------------------------------------------- 1 | Accounts.onCreateUser((options, user) => { 2 | console.log(options, user); 3 | 4 | user.hair = 'brown'; 5 | 6 | return user; 7 | }); 8 | -------------------------------------------------------------------------------- /end of #2/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #3/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #5/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #7/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #8/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #10/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #11/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #14/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #15/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #16/client/main.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { Meteor } from 'meteor/meteor'; 3 | import { render } from 'react-dom'; 4 | 5 | import '../imports/client/routes'; 6 | -------------------------------------------------------------------------------- /end of #10/imports/server/accounts.js: -------------------------------------------------------------------------------- 1 | Accounts.onCreateUser((options, user) => { 2 | if(options.email === 'scott.tolinski@gmail.com') { 3 | user.roles = ['admin']; 4 | } 5 | return user; 6 | }); 7 | -------------------------------------------------------------------------------- /end of #2/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | 5 | 6 | Meteor.startup(() => { 7 | // code to run on server at startup 8 | }); 9 | -------------------------------------------------------------------------------- /end of #3/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | 5 | 6 | Meteor.startup(() => { 7 | // code to run on server at startup 8 | }); 9 | -------------------------------------------------------------------------------- /end of #5/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | 5 | 6 | Meteor.startup(() => { 7 | // code to run on server at startup 8 | }); 9 | -------------------------------------------------------------------------------- /end of #7/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | 5 | 6 | Meteor.startup(() => { 7 | // code to run on server at startup 8 | }); 9 | -------------------------------------------------------------------------------- /end of #11/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "admins" : [ 3 | "scott.tolinski@gmail.com", 4 | "scott.tolinski@gmail.co", 5 | "scott.tolinski@gmail.c" 6 | ], 7 | "public": { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /end of #14/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "admins" : [ 3 | "scott.tolinski@gmail.com", 4 | "scott.tolinski@gmail.co", 5 | "scott.tolinski@gmail.c" 6 | ], 7 | "public": { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /end of #15/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "admins" : [ 3 | "scott.tolinski@gmail.com", 4 | "scott.tolinski@gmail.co", 5 | "scott.tolinski@gmail.c" 6 | ], 7 | "public": { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /end of #16/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "admins" : [ 3 | "scott.tolinski@gmail.com", 4 | "scott.tolinski@gmail.co", 5 | "scott.tolinski@gmail.c" 6 | ], 7 | "public": { 8 | 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /end of #11/imports/server/accounts.js: -------------------------------------------------------------------------------- 1 | Accounts.onCreateUser((options, user) => { 2 | if (Meteor.settings.admins.indexOf(options.email) > -1 ) { 3 | user.roles = ['admin']; 4 | } 5 | return user; 6 | }); 7 | -------------------------------------------------------------------------------- /end of #14/imports/server/accounts.js: -------------------------------------------------------------------------------- 1 | Accounts.onCreateUser((options, user) => { 2 | if (Meteor.settings.admins.indexOf(options.email) > -1 ) { 3 | user.roles = ['admin']; 4 | } 5 | return user; 6 | }); 7 | -------------------------------------------------------------------------------- /end of #15/imports/server/accounts.js: -------------------------------------------------------------------------------- 1 | Accounts.onCreateUser((options, user) => { 2 | if (Meteor.settings.admins.indexOf(options.email) > -1 ) { 3 | user.roles = ['admin']; 4 | } 5 | return user; 6 | }); 7 | -------------------------------------------------------------------------------- /end of #16/imports/server/accounts.js: -------------------------------------------------------------------------------- 1 | Accounts.onCreateUser((options, user) => { 2 | if (Meteor.settings.admins.indexOf(options.email) > -1 ) { 3 | user.roles = ['admin']; 4 | } 5 | return user; 6 | }); 7 | -------------------------------------------------------------------------------- /end of #10/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #11/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #14/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #15/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #16/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #2/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #3/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #5/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #7/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #8/.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | q19zuf1be1biu1yrjh8u 8 | -------------------------------------------------------------------------------- /end of #8/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | import '../imports/server/accounts'; 5 | 6 | Meteor.publish('currentUser', function() { 7 | return Meteor.users.find({_id: this.userId}, { 8 | fields: { 9 | hair: 1 10 | } 11 | }); 12 | }); 13 | 14 | Meteor.startup(() => { 15 | // code to run on server at startup 16 | }); 17 | -------------------------------------------------------------------------------- /end of #11/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | import '../imports/server/accounts'; 5 | 6 | Meteor.publish('currentUser', function() { 7 | return Meteor.users.find({_id: this.userId}, { 8 | fields: { 9 | roles: 1 10 | } 11 | }); 12 | }); 13 | 14 | Meteor.startup(() => { 15 | // code to run on server at startup 16 | }); 17 | -------------------------------------------------------------------------------- /end of #14/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | import '../imports/server/accounts'; 5 | 6 | Meteor.publish('currentUser', function() { 7 | return Meteor.users.find({_id: this.userId}, { 8 | fields: { 9 | roles: 1 10 | } 11 | }); 12 | }); 13 | 14 | Meteor.startup(() => { 15 | // code to run on server at startup 16 | }); 17 | -------------------------------------------------------------------------------- /end of #15/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | import '../imports/server/accounts'; 5 | 6 | Meteor.publish('currentUser', function() { 7 | return Meteor.users.find({_id: this.userId}, { 8 | fields: { 9 | roles: 1 10 | } 11 | }); 12 | }); 13 | 14 | Meteor.startup(() => { 15 | // code to run on server at startup 16 | }); 17 | -------------------------------------------------------------------------------- /end of #16/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | import '../imports/server/accounts'; 5 | 6 | Meteor.publish('currentUser', function() { 7 | return Meteor.users.find({_id: this.userId}, { 8 | fields: { 9 | roles: 1 10 | } 11 | }); 12 | }); 13 | 14 | Meteor.startup(() => { 15 | // code to run on server at startup 16 | }); 17 | -------------------------------------------------------------------------------- /end of #10/server/main.js: -------------------------------------------------------------------------------- 1 | import { Meteor } from 'meteor/meteor'; 2 | 3 | import Items from '../imports/api/Items'; 4 | import '../imports/server/accounts'; 5 | 6 | Meteor.publish('currentUser', function() { 7 | 8 | return Meteor.users.find({_id: this.userId}, { 9 | fields: { 10 | roles: 1 11 | } 12 | }); 13 | }); 14 | 15 | Meteor.startup(() => { 16 | // code to run on server at startup 17 | }); 18 | -------------------------------------------------------------------------------- /end of #3/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | 4 | const MainLayout = ({children}) => { 5 | return ( 6 |
7 |
8 |

Level Up Voting

9 | 10 |
11 | {children} 12 |
13 | ) 14 | } 15 | export default MainLayout; 16 | -------------------------------------------------------------------------------- /end of #10/imports/client/utilities/IsRole.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const IsRole = ({role, children}) => { 4 | if(Roles.userIsInRole(Meteor.userId(), role)) { 5 | return children; 6 | } 7 | return null; 8 | } 9 | 10 | IsRole.propTypes = { 11 | role: PropTypes.oneOfType([ 12 | PropTypes.string, 13 | PropTypes.array 14 | ]).isRequired, 15 | children: PropTypes.object, 16 | } 17 | 18 | export default IsRole; 19 | -------------------------------------------------------------------------------- /end of #11/imports/client/utilities/IsRole.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const IsRole = ({role, children}) => { 4 | if(Roles.userIsInRole(Meteor.userId(), role)) { 5 | return children; 6 | } 7 | return null; 8 | } 9 | 10 | IsRole.propTypes = { 11 | role: PropTypes.oneOfType([ 12 | PropTypes.string, 13 | PropTypes.array 14 | ]).isRequired, 15 | children: PropTypes.object, 16 | } 17 | 18 | export default IsRole; 19 | -------------------------------------------------------------------------------- /end of #14/imports/client/utilities/IsRole.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const IsRole = ({role, children}) => { 4 | if(Roles.userIsInRole(Meteor.userId(), role)) { 5 | return children; 6 | } 7 | return null; 8 | } 9 | 10 | IsRole.propTypes = { 11 | role: PropTypes.oneOfType([ 12 | PropTypes.string, 13 | PropTypes.array 14 | ]).isRequired, 15 | children: PropTypes.object, 16 | } 17 | 18 | export default IsRole; 19 | -------------------------------------------------------------------------------- /end of #15/imports/client/utilities/IsRole.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const IsRole = ({role, children}) => { 4 | if(Roles.userIsInRole(Meteor.userId(), role)) { 5 | return children; 6 | } 7 | return null; 8 | } 9 | 10 | IsRole.propTypes = { 11 | role: PropTypes.oneOfType([ 12 | PropTypes.string, 13 | PropTypes.array 14 | ]).isRequired, 15 | children: PropTypes.object, 16 | } 17 | 18 | export default IsRole; 19 | -------------------------------------------------------------------------------- /end of #16/imports/client/utilities/IsRole.js: -------------------------------------------------------------------------------- 1 | import React, { PropTypes } from 'react'; 2 | 3 | const IsRole = ({role, children}) => { 4 | if(Roles.userIsInRole(Meteor.userId(), role)) { 5 | return children; 6 | } 7 | return null; 8 | } 9 | 10 | IsRole.propTypes = { 11 | role: PropTypes.oneOfType([ 12 | PropTypes.string, 13 | PropTypes.array 14 | ]).isRequired, 15 | children: PropTypes.object, 16 | } 17 | 18 | export default IsRole; 19 | -------------------------------------------------------------------------------- /end of #2/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | import App from './App'; 10 | 11 | Meteor.startup(() => { 12 | render( 13 | 14 | 15 | , 16 | document.getElementById('render-target') 17 | ); 18 | }); 19 | -------------------------------------------------------------------------------- /end of #2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "classnames": "^2.2.5", 9 | "meteor-node-stubs": "~0.2.0", 10 | "react": "^15.3.2", 11 | "react-addons-pure-render-mixin": "^15.3.2", 12 | "react-big-calendar": "^0.11.0", 13 | "react-dom": "^15.3.2", 14 | "react-komposer": "^1.13.1", 15 | "react-router": "^3.0.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /end of #3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "classnames": "^2.2.5", 9 | "meteor-node-stubs": "~0.2.0", 10 | "react": "^15.3.2", 11 | "react-addons-pure-render-mixin": "^15.3.2", 12 | "react-big-calendar": "^0.11.0", 13 | "react-dom": "^15.3.2", 14 | "react-komposer": "^1.13.1", 15 | "react-router": "^3.0.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /end of #10/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #11/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #14/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #15/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #16/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #5/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #7/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #8/imports/client/layouts/MainLayout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 3 | import { Link } from 'react-router'; 4 | 5 | const MainLayout = ({children}) => 6 |
7 |
8 |

Level Up Voting

9 | 10 | 13 |
14 | {children} 15 |
16 | 17 | export default MainLayout; 18 | -------------------------------------------------------------------------------- /end of #10/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #11/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #14/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #15/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #16/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #2/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #3/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #5/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #7/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #8/.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | 1.3.0-split-minifiers-package 14 | 1.4.0-remove-old-dev-bundle-link 15 | 1.4.1-add-shell-server-package 16 | -------------------------------------------------------------------------------- /end of #5/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #7/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #8/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #10/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #11/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #14/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #15/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #16/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "votingAppReact", 3 | "private": true, 4 | "scripts": { 5 | "start": "meteor run" 6 | }, 7 | "dependencies": { 8 | "babel-plugin-transform-decorators-legacy": "^1.3.4", 9 | "classnames": "^2.2.5", 10 | "core-decorators": "^0.15.0", 11 | "meteor-node-stubs": "~0.2.0", 12 | "react": "^15.3.2", 13 | "react-addons-pure-render-mixin": "^15.3.2", 14 | "react-big-calendar": "^0.11.0", 15 | "react-dom": "^15.3.2", 16 | "react-komposer": "^1.13.1", 17 | "react-router": "^3.0.0", 18 | "simpl-schema": "0.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /end of #3/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | 13 | Meteor.startup(() => { 14 | render( 15 | 16 | 17 | 18 | {/* */} 19 | 20 | , 21 | document.getElementById('render-target') 22 | ); 23 | }); 24 | -------------------------------------------------------------------------------- /end of #10/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | , 22 | document.getElementById('render-target') 23 | ); 24 | }); 25 | -------------------------------------------------------------------------------- /end of #11/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | , 22 | document.getElementById('render-target') 23 | ); 24 | }); 25 | -------------------------------------------------------------------------------- /end of #5/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | , 22 | document.getElementById('render-target') 23 | ); 24 | }); 25 | -------------------------------------------------------------------------------- /end of #7/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | , 22 | document.getElementById('render-target') 23 | ); 24 | }); 25 | -------------------------------------------------------------------------------- /end of #8/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | , 22 | document.getElementById('render-target') 23 | ); 24 | }); 25 | -------------------------------------------------------------------------------- /end of #14/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | 22 | , 23 | document.getElementById('render-target') 24 | ); 25 | }); 26 | -------------------------------------------------------------------------------- /end of #15/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | 22 | , 23 | document.getElementById('render-target') 24 | ); 25 | }); 26 | -------------------------------------------------------------------------------- /end of #16/imports/client/routes.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { 3 | Router, 4 | Route, 5 | IndexRoute, 6 | browserHistory 7 | } from 'react-router'; 8 | import { render } from 'react-dom'; 9 | 10 | import MainLayout from './layouts/MainLayout'; 11 | import App from './App'; 12 | import About from './pages/About'; 13 | 14 | Meteor.startup(() => { 15 | render( 16 | 17 | 18 | 19 | 20 | 21 | 22 | , 23 | document.getElementById('render-target') 24 | ); 25 | }); 26 | -------------------------------------------------------------------------------- /end of #10/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #11/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #14/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #15/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #16/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #2/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #3/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #5/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #7/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #8/imports/client/Item.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import Items from '../api/Items'; 3 | 4 | export default class Item extends Component { 5 | voteOne() { 6 | Meteor.call('voteOnItem', this.props.item, 'itemOne'); 7 | } 8 | 9 | voteTwo() { 10 | Meteor.call('voteOnItem', this.props.item, 'itemTwo'); 11 | } 12 | 13 | render() { 14 | return ( 15 |
16 |
17 | {this.props.item.itemOne.value} 18 |

{this.props.item.itemOne.text}

19 |
20 | vs 21 |
22 | {this.props.item.itemTwo.value} 23 |

{this.props.item.itemTwo.text}

24 |
25 |
26 | ) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /end of #2/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.5.9 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password 24 | accounts-facebook 25 | accounts-twitter 26 | accounts-google 27 | 28 | check 29 | 30 | session 31 | -------------------------------------------------------------------------------- /end of #3/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.5.9 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password 24 | accounts-facebook 25 | accounts-twitter 26 | accounts-google 27 | 28 | check 29 | 30 | session 31 | -------------------------------------------------------------------------------- /end of #2/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | 3 | const Items = new Mongo.Collection('items'); 4 | 5 | if (Meteor.isServer) { 6 | 7 | Meteor.publish('allItems', function() { 8 | return Items.find({}, { 9 | limit: 50, 10 | sort: { lastUpdated: 1 } 11 | }); 12 | }); 13 | 14 | 15 | Meteor.methods({ 16 | insertNewItem(itemOne, itemTwo) { 17 | check(itemOne, String); 18 | check(itemTwo, String); 19 | Items.insert({ 20 | itemOne: { 21 | text: itemOne, 22 | value: 0, 23 | }, 24 | itemTwo: { 25 | text: itemTwo, 26 | value: 0, 27 | } 28 | }); 29 | }, 30 | 31 | voteOnItem(item, position) { 32 | check(item, Object); 33 | let lastUpdated = new Date(); 34 | if(Meteor.userId()) { 35 | if(position === 'itemOne') { 36 | Items.update(item._id, { 37 | $inc: { 38 | 'itemOne.value': 1 39 | }, 40 | $set: { 41 | lastUpdated 42 | } 43 | }) 44 | } else { 45 | Items.update(item._id, { 46 | $inc: { 47 | 'itemTwo.value': 1 48 | }, 49 | $set: { 50 | lastUpdated 51 | } 52 | }) 53 | } 54 | } 55 | } 56 | }); 57 | } 58 | 59 | 60 | 61 | export default Items; 62 | -------------------------------------------------------------------------------- /end of #3/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | 3 | const Items = new Mongo.Collection('items'); 4 | 5 | if (Meteor.isServer) { 6 | 7 | Meteor.publish('allItems', function() { 8 | return Items.find({}, { 9 | limit: 50, 10 | sort: { lastUpdated: 1 } 11 | }); 12 | }); 13 | 14 | 15 | Meteor.methods({ 16 | insertNewItem(itemOne, itemTwo) { 17 | check(itemOne, String); 18 | check(itemTwo, String); 19 | Items.insert({ 20 | itemOne: { 21 | text: itemOne, 22 | value: 0, 23 | }, 24 | itemTwo: { 25 | text: itemTwo, 26 | value: 0, 27 | } 28 | }); 29 | }, 30 | 31 | voteOnItem(item, position) { 32 | check(item, Object); 33 | let lastUpdated = new Date(); 34 | if(Meteor.userId()) { 35 | if(position === 'itemOne') { 36 | Items.update(item._id, { 37 | $inc: { 38 | 'itemOne.value': 1 39 | }, 40 | $set: { 41 | lastUpdated 42 | } 43 | }) 44 | } else { 45 | Items.update(item._id, { 46 | $inc: { 47 | 'itemTwo.value': 1 48 | }, 49 | $set: { 50 | lastUpdated 51 | } 52 | }) 53 | } 54 | } 55 | } 56 | }); 57 | } 58 | 59 | 60 | 61 | export default Items; 62 | -------------------------------------------------------------------------------- /end of #5/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | -------------------------------------------------------------------------------- /end of #7/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | -------------------------------------------------------------------------------- /end of #8/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | -------------------------------------------------------------------------------- /end of #10/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | 32 | alanning:roles 33 | -------------------------------------------------------------------------------- /end of #11/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | 32 | alanning:roles 33 | -------------------------------------------------------------------------------- /end of #14/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | 32 | alanning:roles 33 | -------------------------------------------------------------------------------- /end of #15/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | 32 | alanning:roles 33 | -------------------------------------------------------------------------------- /end of #16/.meteor/packages: -------------------------------------------------------------------------------- 1 | # Meteor packages used by this project, one per line. 2 | # Check this file (and the other files in this directory) into your repository. 3 | # 4 | # 'meteor add' and 'meteor remove' will edit this file for you, 5 | # but you can also edit it by hand. 6 | 7 | meteor-base@1.0.4 # Packages every Meteor app needs to have 8 | mobile-experience@1.0.4 # Packages for a great mobile UX 9 | mongo@1.1.14 # The database Meteor supports right now 10 | blaze-html-templates@1.0.4 # Compile .html files into Meteor Blaze views 11 | reactive-var@1.0.11 # Reactive variable for tracker 12 | jquery@1.11.10 # Helpful client-side library 13 | tracker@1.1.1 # Meteor's client-side reactive programming library 14 | 15 | standard-minifier-css@1.3.2 # CSS minifier run for production mode 16 | standard-minifier-js@1.2.1 # JS minifier run for production mode 17 | es5-shim@4.6.15 # ECMAScript 5 compatibility for older browsers. 18 | ecmascript@0.6.1 # Enable ECMAScript2015+ syntax in app code 19 | shell-server@0.2.1 # Server-side component of the `meteor shell` command 20 | 21 | react-meteor-data 22 | okgrow:accounts-ui-react 23 | accounts-password@1.3.3 24 | accounts-facebook@1.0.11 25 | accounts-twitter@1.1.12 26 | accounts-google@1.0.11 27 | 28 | check@1.2.4 29 | aldeed:collection2-core@2.0.0 30 | session@1.1.7 31 | 32 | alanning:roles 33 | -------------------------------------------------------------------------------- /end of #7/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | }, 47 | 48 | voteOnItem(item, position) { 49 | check(item, Object); 50 | let lastUpdated = new Date(); 51 | if(Meteor.userId()) { 52 | if(position === 'itemOne') { 53 | Items.update(item._id, { 54 | $inc: { 55 | 'itemOne.value': 1 56 | }, 57 | $set: { 58 | lastUpdated 59 | } 60 | }) 61 | } else { 62 | Items.update(item._id, { 63 | $inc: { 64 | 'itemTwo.value': 1 65 | }, 66 | $set: { 67 | lastUpdated 68 | } 69 | }) 70 | } 71 | } 72 | } 73 | }); 74 | } 75 | 76 | 77 | 78 | export default Items; 79 | -------------------------------------------------------------------------------- /end of #8/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | }, 47 | 48 | voteOnItem(item, position) { 49 | check(item, Object); 50 | let lastUpdated = new Date(); 51 | if(Meteor.userId()) { 52 | if(position === 'itemOne') { 53 | Items.update(item._id, { 54 | $inc: { 55 | 'itemOne.value': 1 56 | }, 57 | $set: { 58 | lastUpdated 59 | } 60 | }) 61 | } else { 62 | Items.update(item._id, { 63 | $inc: { 64 | 'itemTwo.value': 1 65 | }, 66 | $set: { 67 | lastUpdated 68 | } 69 | }) 70 | } 71 | } 72 | } 73 | }); 74 | } 75 | 76 | 77 | 78 | export default Items; 79 | -------------------------------------------------------------------------------- /end of #10/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | Roles.addUsersToRoles(Meteor.userId(), 'submitter'); 47 | }, 48 | 49 | voteOnItem(item, position) { 50 | check(item, Object); 51 | let lastUpdated = new Date(); 52 | if(Meteor.userId()) { 53 | if(position === 'itemOne') { 54 | Items.update(item._id, { 55 | $inc: { 56 | 'itemOne.value': 1 57 | }, 58 | $set: { 59 | lastUpdated 60 | } 61 | }) 62 | } else { 63 | Items.update(item._id, { 64 | $inc: { 65 | 'itemTwo.value': 1 66 | }, 67 | $set: { 68 | lastUpdated 69 | } 70 | }) 71 | } 72 | Roles.addUsersToRoles(Meteor.userId(), 'voter'); 73 | } 74 | } 75 | }); 76 | } 77 | 78 | 79 | 80 | export default Items; 81 | -------------------------------------------------------------------------------- /end of #11/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | Roles.addUsersToRoles(Meteor.userId(), 'submitter'); 47 | }, 48 | 49 | voteOnItem(item, position) { 50 | check(item, Object); 51 | let lastUpdated = new Date(); 52 | if(Meteor.userId()) { 53 | if(position === 'itemOne') { 54 | Items.update(item._id, { 55 | $inc: { 56 | 'itemOne.value': 1 57 | }, 58 | $set: { 59 | lastUpdated 60 | } 61 | }) 62 | } else { 63 | Items.update(item._id, { 64 | $inc: { 65 | 'itemTwo.value': 1 66 | }, 67 | $set: { 68 | lastUpdated 69 | } 70 | }) 71 | } 72 | Roles.addUsersToRoles(Meteor.userId(), 'voter'); 73 | } 74 | } 75 | }); 76 | } 77 | 78 | 79 | 80 | export default Items; 81 | -------------------------------------------------------------------------------- /end of #14/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | Roles.addUsersToRoles(Meteor.userId(), 'submitter'); 47 | }, 48 | 49 | voteOnItem(item, position) { 50 | check(item, Object); 51 | let lastUpdated = new Date(); 52 | if(Meteor.userId()) { 53 | if(position === 'itemOne') { 54 | Items.update(item._id, { 55 | $inc: { 56 | 'itemOne.value': 1 57 | }, 58 | $set: { 59 | lastUpdated 60 | } 61 | }) 62 | } else { 63 | Items.update(item._id, { 64 | $inc: { 65 | 'itemTwo.value': 1 66 | }, 67 | $set: { 68 | lastUpdated 69 | } 70 | }) 71 | } 72 | Roles.addUsersToRoles(Meteor.userId(), 'voter'); 73 | } 74 | } 75 | }); 76 | } 77 | 78 | 79 | 80 | export default Items; 81 | -------------------------------------------------------------------------------- /end of #15/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | Roles.addUsersToRoles(Meteor.userId(), 'submitter'); 47 | }, 48 | 49 | voteOnItem(item, position) { 50 | check(item, Object); 51 | let lastUpdated = new Date(); 52 | if(Meteor.userId()) { 53 | if(position === 'itemOne') { 54 | Items.update(item._id, { 55 | $inc: { 56 | 'itemOne.value': 1 57 | }, 58 | $set: { 59 | lastUpdated 60 | } 61 | }) 62 | } else { 63 | Items.update(item._id, { 64 | $inc: { 65 | 'itemTwo.value': 1 66 | }, 67 | $set: { 68 | lastUpdated 69 | } 70 | }) 71 | } 72 | Roles.addUsersToRoles(Meteor.userId(), 'voter'); 73 | } 74 | } 75 | }); 76 | } 77 | 78 | 79 | 80 | export default Items; 81 | -------------------------------------------------------------------------------- /end of #16/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemSchema = new SimpleSchema({ 7 | text: String, 8 | value: SimpleSchema.Integer, 9 | }); 10 | 11 | const ItemsSchema = new SimpleSchema({ 12 | itemOne: ItemSchema, 13 | itemTwo: ItemSchema, 14 | lastUpdated: { 15 | type: Date, 16 | optional: true 17 | } 18 | }); 19 | 20 | Items.attachSchema(ItemsSchema); 21 | 22 | 23 | 24 | if (Meteor.isServer) { 25 | 26 | Meteor.publish('allItems', function() { 27 | return Items.find({}, { 28 | limit: 50, 29 | sort: { lastUpdated: 1 } 30 | }); 31 | }); 32 | 33 | 34 | Meteor.methods({ 35 | insertNewItem(itemOne, itemTwo) { 36 | Items.insert({ 37 | itemOne: { 38 | text: itemOne, 39 | value: 0, 40 | }, 41 | itemTwo: { 42 | text: itemTwo, 43 | value: 0, 44 | } 45 | }); 46 | Roles.addUsersToRoles(Meteor.userId(), 'submitter'); 47 | }, 48 | 49 | voteOnItem(item, position) { 50 | check(item, Object); 51 | let lastUpdated = new Date(); 52 | if(Meteor.userId()) { 53 | if(position === 'itemOne') { 54 | Items.update(item._id, { 55 | $inc: { 56 | 'itemOne.value': 1 57 | }, 58 | $set: { 59 | lastUpdated 60 | } 61 | }) 62 | } else { 63 | Items.update(item._id, { 64 | $inc: { 65 | 'itemTwo.value': 1 66 | }, 67 | $set: { 68 | lastUpdated 69 | } 70 | }) 71 | } 72 | Roles.addUsersToRoles(Meteor.userId(), 'voter'); 73 | } 74 | } 75 | }); 76 | } 77 | 78 | 79 | 80 | export default Items; 81 | -------------------------------------------------------------------------------- /end of #3/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | 4 | import Item from './Item'; 5 | 6 | import Items from '../api/Items'; 7 | 8 | class App extends Component { 9 | addItems(event) { 10 | event.preventDefault(); 11 | const itemOne = this.refs.itemOne.value.trim(); 12 | const itemTwo = this.refs.itemTwo.value.trim(); 13 | if (itemOne !== '' && itemTwo !== '') { 14 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 15 | if(!err) { 16 | this.refs.itemOne.value = ''; 17 | this.refs.itemTwo.value = ''; 18 | } 19 | }); 20 | } 21 | } 22 | 23 | showAll() { 24 | if(this.props.showAll) { 25 | Session.set('showAll', false); 26 | } else { 27 | Session.set('showAll', true); 28 | } 29 | 30 | } 31 | 32 | render() { 33 | if (!this.props.ready) { 34 | return
Loading
; 35 | } 36 | 37 | return ( 38 |
39 | 42 |
43 | 44 | 45 | 46 |
47 | {this.props.items.map((item) => { 48 | return 49 | })} 50 |
51 | ); 52 | } 53 | } 54 | 55 | 56 | export default createContainer(() => { 57 | let itemsSub = Meteor.subscribe('allItems'); 58 | let showAll = Session.get('showAll'); 59 | return { 60 | showAll, 61 | ready: itemsSub.ready(), 62 | items: Items.find({}, { 63 | limit: showAll ? 50 : 1, 64 | sort: { lastUpdated: 1 } 65 | }).fetch() 66 | } 67 | }, App); 68 | -------------------------------------------------------------------------------- /end of #5/imports/api/Items.js: -------------------------------------------------------------------------------- 1 | import { Mongo } from 'meteor/mongo'; 2 | import SimpleSchema from 'simpl-schema'; 3 | 4 | const Items = new Mongo.Collection('items'); 5 | 6 | const ItemsSchema = new SimpleSchema({ 7 | itemOne: { 8 | type: Object 9 | }, 10 | 'itemOne.text': { 11 | type: String 12 | }, 13 | 'itemOne.value': { 14 | type: SimpleSchema.Integer, 15 | }, 16 | itemTwo: { 17 | type: Object 18 | }, 19 | 'itemTwo.text': { 20 | type: String 21 | }, 22 | 'itemTwo.value': { 23 | type: SimpleSchema.Integer, 24 | }, 25 | lastUpdated: { 26 | type: Date, 27 | optional: true 28 | } 29 | }); 30 | 31 | Items.attachSchema(ItemsSchema); 32 | 33 | 34 | 35 | if (Meteor.isServer) { 36 | 37 | Meteor.publish('allItems', function() { 38 | return Items.find({}, { 39 | limit: 50, 40 | sort: { lastUpdated: 1 } 41 | }); 42 | }); 43 | 44 | 45 | Meteor.methods({ 46 | insertNewItem(itemOne, itemTwo) { 47 | Items.insert({ 48 | itemOne: { 49 | text: itemOne, 50 | value: 0, 51 | }, 52 | itemTwo: { 53 | text: itemTwo, 54 | value: 0, 55 | } 56 | }); 57 | }, 58 | 59 | voteOnItem(item, position) { 60 | check(item, Object); 61 | let lastUpdated = new Date(); 62 | if(Meteor.userId()) { 63 | if(position === 'itemOne') { 64 | Items.update(item._id, { 65 | $inc: { 66 | 'itemOne.value': 1 67 | }, 68 | $set: { 69 | lastUpdated 70 | } 71 | }) 72 | } else { 73 | Items.update(item._id, { 74 | $inc: { 75 | 'itemTwo.value': 1 76 | }, 77 | $set: { 78 | lastUpdated 79 | } 80 | }) 81 | } 82 | } 83 | } 84 | }); 85 | } 86 | 87 | 88 | 89 | export default Items; 90 | -------------------------------------------------------------------------------- /end of #5/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | 7 | import Items from '../api/Items'; 8 | 9 | @autobind 10 | class App extends Component { 11 | addItems(event) { 12 | event.preventDefault(); 13 | const itemOne = this.refs.itemOne.value.trim(); 14 | const itemTwo = this.refs.itemTwo.value.trim(); 15 | if (itemOne !== '' && itemTwo !== '') { 16 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 17 | if(!err) { 18 | this.refs.itemOne.value = ''; 19 | this.refs.itemTwo.value = ''; 20 | } 21 | }); 22 | } 23 | } 24 | 25 | showAll() { 26 | if(this.props.showAll) { 27 | Session.set('showAll', false); 28 | } else { 29 | Session.set('showAll', true); 30 | } 31 | 32 | } 33 | 34 | render() { 35 | if (!this.props.ready) { 36 | return
Loading
; 37 | } 38 | 39 | return ( 40 |
41 | 44 |
45 | 46 | 47 | 48 |
49 | {this.props.items.map((item) => { 50 | return 51 | })} 52 |
53 | ); 54 | } 55 | } 56 | 57 | 58 | export default createContainer(() => { 59 | let itemsSub = Meteor.subscribe('allItems'); 60 | let showAll = Session.get('showAll'); 61 | return { 62 | showAll, 63 | ready: itemsSub.ready(), 64 | items: Items.find({}, { 65 | limit: showAll ? 50 : 1, 66 | sort: { lastUpdated: 1 } 67 | }).fetch() 68 | } 69 | }, App); 70 | -------------------------------------------------------------------------------- /end of #7/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | 7 | import Items from '../api/Items'; 8 | 9 | @autobind 10 | class App extends Component { 11 | addItems(event) { 12 | event.preventDefault(); 13 | const itemOne = this.refs.itemOne.value.trim(); 14 | const itemTwo = this.refs.itemTwo.value.trim(); 15 | if (itemOne !== '' && itemTwo !== '') { 16 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 17 | if(!err) { 18 | this.refs.itemOne.value = ''; 19 | this.refs.itemTwo.value = ''; 20 | } 21 | }); 22 | } 23 | } 24 | 25 | showAll() { 26 | if(this.props.showAll) { 27 | Session.set('showAll', false); 28 | } else { 29 | Session.set('showAll', true); 30 | } 31 | 32 | } 33 | 34 | render() { 35 | if (!this.props.ready) { 36 | return
Loading
; 37 | } 38 | 39 | return ( 40 |
41 | 44 |
45 | 46 | 47 | 48 |
49 | {this.props.items.map((item) => { 50 | return 51 | })} 52 |
53 | ); 54 | } 55 | } 56 | 57 | 58 | export default createContainer(() => { 59 | let itemsSub = Meteor.subscribe('allItems'); 60 | let showAll = Session.get('showAll'); 61 | return { 62 | showAll, 63 | ready: itemsSub.ready(), 64 | items: Items.find({}, { 65 | limit: showAll ? 50 : 1, 66 | sort: { lastUpdated: 1 } 67 | }).fetch() 68 | } 69 | }, App); 70 | -------------------------------------------------------------------------------- /end of #8/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | 7 | import Items from '../api/Items'; 8 | 9 | @autobind 10 | class App extends Component { 11 | addItems(event) { 12 | event.preventDefault(); 13 | const itemOne = this.refs.itemOne.value.trim(); 14 | const itemTwo = this.refs.itemTwo.value.trim(); 15 | if (itemOne !== '' && itemTwo !== '') { 16 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 17 | if(!err) { 18 | this.refs.itemOne.value = ''; 19 | this.refs.itemTwo.value = ''; 20 | } 21 | }); 22 | } 23 | } 24 | 25 | showAll() { 26 | if(this.props.showAll) { 27 | Session.set('showAll', false); 28 | } else { 29 | Session.set('showAll', true); 30 | } 31 | 32 | } 33 | 34 | render() { 35 | if (!this.props.ready) { 36 | return
Loading
; 37 | } 38 | 39 | return ( 40 |
41 | 44 |
45 | 46 | 47 | 48 |
49 | {this.props.items.map((item) => { 50 | return 51 | })} 52 |
53 | ); 54 | } 55 | } 56 | 57 | 58 | export default createContainer(() => { 59 | let itemsSub = Meteor.subscribe('allItems'); 60 | let userSub = Meteor.subscribe('currentUser'); 61 | let showAll = Session.get('showAll'); 62 | return { 63 | showAll, 64 | ready: itemsSub.ready(), 65 | items: Items.find({}, { 66 | limit: showAll ? 50 : 1, 67 | sort: { lastUpdated: 1 } 68 | }).fetch() 69 | } 70 | }, App); 71 | -------------------------------------------------------------------------------- /end of #10/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | import IsRole from './utilities/IsRole'; 7 | 8 | import Items from '../api/Items'; 9 | 10 | @autobind 11 | class App extends Component { 12 | addItems(event) { 13 | event.preventDefault(); 14 | const itemOne = this.refs.itemOne.value.trim(); 15 | const itemTwo = this.refs.itemTwo.value.trim(); 16 | if (itemOne !== '' && itemTwo !== '') { 17 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 18 | if(!err) { 19 | this.refs.itemOne.value = ''; 20 | this.refs.itemTwo.value = ''; 21 | } 22 | }); 23 | } 24 | } 25 | 26 | showAll() { 27 | if(this.props.showAll) { 28 | Session.set('showAll', false); 29 | } else { 30 | Session.set('showAll', true); 31 | } 32 | 33 | } 34 | 35 | render() { 36 | if (!this.props.ready) { 37 | return
Loading
; 38 | } 39 | 40 | return ( 41 |
42 | 43 | 46 | 47 |
48 | 49 | 50 | 51 |
52 | {this.props.items.map((item) => { 53 | return 54 | })} 55 |
56 | ); 57 | } 58 | } 59 | 60 | export default createContainer(() => { 61 | let itemsSub = Meteor.subscribe('allItems'); 62 | let userSub = Meteor.subscribe('currentUser'); 63 | let showAll = Session.get('showAll'); 64 | return { 65 | showAll, 66 | ready: itemsSub.ready() && userSub.ready(), 67 | items: Items.find({}, { 68 | limit: showAll ? 50 : 1, 69 | sort: { lastUpdated: 1 } 70 | }).fetch() 71 | } 72 | }, App); 73 | -------------------------------------------------------------------------------- /end of #11/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | import IsRole from './utilities/IsRole'; 7 | 8 | import Items from '../api/Items'; 9 | 10 | @autobind 11 | class App extends Component { 12 | addItems(event) { 13 | event.preventDefault(); 14 | const itemOne = this.refs.itemOne.value.trim(); 15 | const itemTwo = this.refs.itemTwo.value.trim(); 16 | if (itemOne !== '' && itemTwo !== '') { 17 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 18 | if(!err) { 19 | this.refs.itemOne.value = ''; 20 | this.refs.itemTwo.value = ''; 21 | } 22 | }); 23 | } 24 | } 25 | 26 | showAll() { 27 | if(this.props.showAll) { 28 | Session.set('showAll', false); 29 | } else { 30 | Session.set('showAll', true); 31 | } 32 | 33 | } 34 | 35 | render() { 36 | if (!this.props.ready) { 37 | return
Loading
; 38 | } 39 | 40 | return ( 41 |
42 | 43 | 46 | 47 |
48 | 49 | 50 | 51 |
52 | {this.props.items.map((item) => { 53 | return 54 | })} 55 |
56 | ); 57 | } 58 | } 59 | 60 | export default createContainer(() => { 61 | let itemsSub = Meteor.subscribe('allItems'); 62 | let userSub = Meteor.subscribe('currentUser'); 63 | let showAll = Session.get('showAll'); 64 | return { 65 | showAll, 66 | ready: itemsSub.ready() && userSub.ready(), 67 | items: Items.find({}, { 68 | limit: showAll ? 50 : 1, 69 | sort: { lastUpdated: 1 } 70 | }).fetch() 71 | } 72 | }, App); 73 | -------------------------------------------------------------------------------- /end of #2/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { LoginButtons } from 'meteor/okgrow:accounts-ui-react'; 4 | 5 | 6 | import Item from './Item'; 7 | 8 | import Items from '../api/Items'; 9 | 10 | class App extends Component { 11 | addItems(event) { 12 | event.preventDefault(); 13 | const itemOne = this.refs.itemOne.value.trim(); 14 | const itemTwo = this.refs.itemTwo.value.trim(); 15 | if (itemOne !== '' && itemTwo !== '') { 16 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 17 | if(!err) { 18 | this.refs.itemOne.value = ''; 19 | this.refs.itemTwo.value = ''; 20 | } 21 | }); 22 | } 23 | } 24 | 25 | showAll() { 26 | if(this.props.showAll) { 27 | Session.set('showAll', false); 28 | } else { 29 | Session.set('showAll', true); 30 | } 31 | 32 | } 33 | 34 | render() { 35 | if (!this.props.ready) { 36 | return
Loading
; 37 | } 38 | 39 | return ( 40 |
41 |
42 |

Level Up Voting

43 | 44 | 47 |
48 |
49 |
50 | 51 | 52 | 53 |
54 | {this.props.items.map((item) => { 55 | return 56 | })} 57 |
58 |
59 | ); 60 | } 61 | } 62 | 63 | 64 | export default createContainer(() => { 65 | let itemsSub = Meteor.subscribe('allItems'); 66 | let showAll = Session.get('showAll'); 67 | return { 68 | showAll, 69 | ready: itemsSub.ready(), 70 | items: Items.find({}, { 71 | limit: showAll ? 50 : 1, 72 | sort: { lastUpdated: 1 } 73 | }).fetch() 74 | } 75 | }, App); 76 | -------------------------------------------------------------------------------- /end of #5/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #7/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #8/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #10/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #11/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #14/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #15/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #16/imports/client/pages/About.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | 3 | const About = () => 4 |
5 |

About Us

6 |

7 | Unicorn raw denim pitchfork hell of wolf messenger bag. Freegan schlitz XOXO bitters, fam synth tbh. Poke try-hard tousled YOLO. Thundercats actually seitan sriracha chambray. Bespoke fingerstache man bun poke disrupt. Pour-over gentrify tumeric kinfolk cold-pressed polaroid. Pitchfork small batch vape kickstarter, vinyl pabst squid neutra waistcoat. 8 |

9 |

10 | Humblebrag unicorn chartreuse, direct trade forage bushwick slow-carb activated charcoal neutra ethical hot chicken glossier. Prism vexillologist affogato, lo-fi chia tofu skateboard food truck actually ennui. Shoreditch lumbersexual wayfarers vinyl farm-to-table, PBR&B disrupt master cleanse venmo cold-pressed YOLO umami iceland ethical. Marfa organic neutra vinyl lomo semiotics. Lomo lo-fi hoodie banjo. Meh master cleanse gluten-free green juice. Next level cardigan gochujang sustainable. 11 |

12 |

13 | Mustache vinyl slow-carb sartorial salvia waistcoat. Hoodie migas ethical snackwave. Twee trust fund biodiesel, brooklyn heirloom artisan blue bottle glossier hella subway tile enamel pin dreamcatcher lumbersexual chicharrones whatever. Fixie slow-carb activated charcoal, VHS offal fam master cleanse schlitz freegan try-hard stumptown. Ethical bicycle rights gochujang, locavore humblebrag tacos austin air plant marfa hashtag roof party. Before they sold out fixie roof party, hot chicken raclette art party trust fund authentic jean shorts. Butcher polaroid single-origin coffee yr bitters hot chicken. 14 |

15 |

16 | Authentic tousled fap unicorn. Leggings unicorn cliche meh fashion axe air plant. Williamsburg street art jianbing drinking vinegar typewriter, slow-carb glossier pitchfork hashtag tattooed try-hard retro man braid. Pabst meh readymade, +1 kinfolk yr synth wolf pug. Air plant vegan jean shorts skateboard thundercats. Kinfolk austin biodiesel crucifix. Quinoa twee pitchfork ennui everyday carry, chia forage vape fashion axe franzen occupy snackwave wolf. 17 |

18 |
19 | 20 | export default About; 21 | -------------------------------------------------------------------------------- /end of #14/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | import IsRole from './utilities/IsRole'; 7 | 8 | import Items from '../api/Items'; 9 | 10 | @autobind 11 | class App extends Component { 12 | addItems(event) { 13 | event.preventDefault(); 14 | const itemOne = this.refs.itemOne.value.trim(); 15 | const itemTwo = this.refs.itemTwo.value.trim(); 16 | if (itemOne !== '' && itemTwo !== '') { 17 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 18 | if(!err) { 19 | this.refs.itemOne.value = ''; 20 | this.refs.itemTwo.value = ''; 21 | } 22 | }); 23 | } 24 | } 25 | 26 | showAll() { 27 | if(this.props.showAll) { 28 | Session.set('showAll', false); 29 | } else { 30 | Session.set('showAll', true); 31 | } 32 | 33 | } 34 | 35 | render() { 36 | if (!this.props.ready) { 37 | return
Loading
; 38 | } 39 | 40 | return ( 41 |
42 | 43 | 46 | 47 |
48 | 49 | 50 | 51 |
52 | {this.props.items.map((item) => { 53 | return 54 | })} 55 |
56 | ); 57 | } 58 | } 59 | 60 | export default createContainer(({params}) => { 61 | let itemsSub = Meteor.subscribe('allItems'); 62 | let userSub = Meteor.subscribe('currentUser'); 63 | let showAll = Session.get('showAll'); 64 | 65 | let itemsArray; 66 | if (params.id) { 67 | itemsArray = Items.find({_id: params.id}).fetch(); 68 | } else { 69 | itemsArray = Items.find({}, { 70 | limit: showAll ? 50 : 1, 71 | sort: { lastUpdated: 1 } 72 | }).fetch() 73 | } 74 | return { 75 | showAll, 76 | ready: itemsSub.ready() && userSub.ready(), 77 | items: itemsArray 78 | } 79 | }, App); 80 | -------------------------------------------------------------------------------- /end of #2/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.10 3 | accounts-google@1.0.10 4 | accounts-oauth@1.1.14 5 | accounts-password@1.3.1 6 | accounts-twitter@1.0.10 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | allow-deny@1.0.5 10 | autoupdate@1.2.11 11 | babel-compiler@6.13.0 12 | babel-runtime@0.1.13 13 | base64@1.0.10 14 | binary-heap@1.0.10 15 | blaze@2.1.9 16 | blaze-html-templates@1.0.5 17 | blaze-tools@1.0.10 18 | boilerplate-generator@1.0.11 19 | caching-compiler@1.1.8 20 | caching-html-compiler@1.0.7 21 | callback-hook@1.0.10 22 | check@1.2.4 23 | ddp@1.2.5 24 | ddp-client@1.2.9 25 | ddp-common@1.2.7 26 | ddp-rate-limiter@1.0.6 27 | ddp-server@1.2.10 28 | deps@1.0.12 29 | diff-sequence@1.0.7 30 | ecmascript@0.5.9 31 | ecmascript-runtime@0.3.15 32 | ejson@1.0.13 33 | email@1.1.18 34 | es5-shim@4.6.15 35 | facebook@1.2.8 36 | fastclick@1.0.13 37 | geojson-utils@1.0.10 38 | google@1.1.13 39 | hot-code-push@1.0.4 40 | html-tools@1.0.11 41 | htmljs@1.0.11 42 | http@1.1.8 43 | id-map@1.0.9 44 | jquery@1.11.10 45 | jsx@0.2.4 46 | launch-screen@1.0.12 47 | less@2.5.7 48 | livedata@1.0.18 49 | localstorage@1.0.12 50 | logging@1.1.16 51 | meteor@1.6.0 52 | meteor-base@1.0.4 53 | minifier-css@1.2.15 54 | minifier-js@1.2.15 55 | minimongo@1.0.18 56 | mobile-experience@1.0.4 57 | mobile-status-bar@1.0.13 58 | modules@0.7.7 59 | modules-runtime@0.7.7 60 | mongo@1.1.14 61 | mongo-id@1.0.6 62 | npm-bcrypt@0.9.2 63 | npm-mongo@2.2.11_2 64 | oauth@1.1.12 65 | oauth1@1.1.10 66 | oauth2@1.1.11 67 | observe-sequence@1.0.14 68 | okgrow:accounts-ui-react@0.7.2 69 | ordered-dict@1.0.9 70 | promise@0.8.8 71 | random@1.0.10 72 | rate-limit@1.0.6 73 | react-meteor-data@0.2.9 74 | reactive-dict@1.1.8 75 | reactive-var@1.0.11 76 | reload@1.1.11 77 | retry@1.0.9 78 | routepolicy@1.0.12 79 | service-configuration@1.0.11 80 | session@1.1.7 81 | sha@1.0.9 82 | shell-server@0.2.1 83 | spacebars@1.0.13 84 | spacebars-compiler@1.0.13 85 | srp@1.0.10 86 | standard-minifier-css@1.3.2 87 | standard-minifier-js@1.2.1 88 | templating@1.2.15 89 | templating-compiler@1.2.15 90 | templating-runtime@1.2.15 91 | templating-tools@1.0.5 92 | thereactivestack:blazetoreact@1.0.2 93 | tmeasday:check-npm-versions@0.2.0 94 | tracker@1.1.1 95 | twitter@1.1.11 96 | ui@1.0.12 97 | underscore@1.0.10 98 | url@1.0.11 99 | webapp@1.3.12 100 | webapp-hashing@1.0.9 101 | -------------------------------------------------------------------------------- /end of #3/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.10 3 | accounts-google@1.0.10 4 | accounts-oauth@1.1.14 5 | accounts-password@1.3.1 6 | accounts-twitter@1.0.10 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | allow-deny@1.0.5 10 | autoupdate@1.2.11 11 | babel-compiler@6.13.0 12 | babel-runtime@0.1.13 13 | base64@1.0.10 14 | binary-heap@1.0.10 15 | blaze@2.1.9 16 | blaze-html-templates@1.0.5 17 | blaze-tools@1.0.10 18 | boilerplate-generator@1.0.11 19 | caching-compiler@1.1.8 20 | caching-html-compiler@1.0.7 21 | callback-hook@1.0.10 22 | check@1.2.4 23 | ddp@1.2.5 24 | ddp-client@1.2.9 25 | ddp-common@1.2.7 26 | ddp-rate-limiter@1.0.6 27 | ddp-server@1.2.10 28 | deps@1.0.12 29 | diff-sequence@1.0.7 30 | ecmascript@0.5.9 31 | ecmascript-runtime@0.3.15 32 | ejson@1.0.13 33 | email@1.1.18 34 | es5-shim@4.6.15 35 | facebook@1.2.8 36 | fastclick@1.0.13 37 | geojson-utils@1.0.10 38 | google@1.1.13 39 | hot-code-push@1.0.4 40 | html-tools@1.0.11 41 | htmljs@1.0.11 42 | http@1.1.8 43 | id-map@1.0.9 44 | jquery@1.11.10 45 | jsx@0.2.4 46 | launch-screen@1.0.12 47 | less@2.5.7 48 | livedata@1.0.18 49 | localstorage@1.0.12 50 | logging@1.1.16 51 | meteor@1.6.0 52 | meteor-base@1.0.4 53 | minifier-css@1.2.15 54 | minifier-js@1.2.15 55 | minimongo@1.0.18 56 | mobile-experience@1.0.4 57 | mobile-status-bar@1.0.13 58 | modules@0.7.7 59 | modules-runtime@0.7.7 60 | mongo@1.1.14 61 | mongo-id@1.0.6 62 | npm-bcrypt@0.9.2 63 | npm-mongo@2.2.11_2 64 | oauth@1.1.12 65 | oauth1@1.1.10 66 | oauth2@1.1.11 67 | observe-sequence@1.0.14 68 | okgrow:accounts-ui-react@0.7.2 69 | ordered-dict@1.0.9 70 | promise@0.8.8 71 | random@1.0.10 72 | rate-limit@1.0.6 73 | react-meteor-data@0.2.9 74 | reactive-dict@1.1.8 75 | reactive-var@1.0.11 76 | reload@1.1.11 77 | retry@1.0.9 78 | routepolicy@1.0.12 79 | service-configuration@1.0.11 80 | session@1.1.7 81 | sha@1.0.9 82 | shell-server@0.2.1 83 | spacebars@1.0.13 84 | spacebars-compiler@1.0.13 85 | srp@1.0.10 86 | standard-minifier-css@1.3.2 87 | standard-minifier-js@1.2.1 88 | templating@1.2.15 89 | templating-compiler@1.2.15 90 | templating-runtime@1.2.15 91 | templating-tools@1.0.5 92 | thereactivestack:blazetoreact@1.0.2 93 | tmeasday:check-npm-versions@0.2.0 94 | tracker@1.1.1 95 | twitter@1.1.11 96 | ui@1.0.12 97 | underscore@1.0.10 98 | url@1.0.11 99 | webapp@1.3.12 100 | webapp-hashing@1.0.9 101 | -------------------------------------------------------------------------------- /end of #5/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | aldeed:collection2-core@2.0.0 10 | allow-deny@1.0.5 11 | autoupdate@1.2.11 12 | babel-compiler@6.13.0 13 | babel-runtime@1.0.1 14 | base64@1.0.10 15 | binary-heap@1.0.10 16 | blaze@2.1.9 17 | blaze-html-templates@1.0.5 18 | blaze-tools@1.0.10 19 | boilerplate-generator@1.0.11 20 | caching-compiler@1.1.9 21 | caching-html-compiler@1.0.7 22 | callback-hook@1.0.10 23 | check@1.2.4 24 | ddp@1.2.5 25 | ddp-client@1.2.9 26 | ddp-common@1.2.8 27 | ddp-rate-limiter@1.0.6 28 | ddp-server@1.2.10 29 | deps@1.0.12 30 | diff-sequence@1.0.7 31 | ecmascript@0.6.1 32 | ecmascript-runtime@0.3.15 33 | ejson@1.0.13 34 | email@1.1.18 35 | es5-shim@4.6.15 36 | facebook@1.2.10 37 | fastclick@1.0.13 38 | geojson-utils@1.0.10 39 | google@1.1.15 40 | hot-code-push@1.0.4 41 | html-tools@1.0.11 42 | htmljs@1.0.11 43 | http@1.2.10 44 | id-map@1.0.9 45 | jquery@1.11.10 46 | jsx@0.2.4 47 | launch-screen@1.0.12 48 | less@2.5.7 49 | livedata@1.0.18 50 | localstorage@1.0.12 51 | logging@1.1.16 52 | meteor@1.6.0 53 | meteor-base@1.0.4 54 | minifier-css@1.2.15 55 | minifier-js@1.2.15 56 | minimongo@1.0.19 57 | mobile-experience@1.0.4 58 | mobile-status-bar@1.0.13 59 | modules@0.7.7 60 | modules-runtime@0.7.7 61 | mongo@1.1.14 62 | mongo-id@1.0.6 63 | npm-bcrypt@0.9.2 64 | npm-mongo@2.2.11_2 65 | oauth@1.1.12 66 | oauth1@1.1.11 67 | oauth2@1.1.11 68 | observe-sequence@1.0.14 69 | okgrow:accounts-ui-react@0.7.2 70 | ordered-dict@1.0.9 71 | promise@0.8.8 72 | raix:eventemitter@0.1.3 73 | random@1.0.10 74 | rate-limit@1.0.6 75 | react-meteor-data@0.2.9 76 | reactive-dict@1.1.8 77 | reactive-var@1.0.11 78 | reload@1.1.11 79 | retry@1.0.9 80 | routepolicy@1.0.12 81 | service-configuration@1.0.11 82 | session@1.1.7 83 | sha@1.0.9 84 | shell-server@0.2.1 85 | spacebars@1.0.13 86 | spacebars-compiler@1.0.13 87 | srp@1.0.10 88 | standard-minifier-css@1.3.2 89 | standard-minifier-js@1.2.1 90 | templating@1.2.15 91 | templating-compiler@1.2.15 92 | templating-runtime@1.2.15 93 | templating-tools@1.0.5 94 | thereactivestack:blazetoreact@1.0.2 95 | tmeasday:check-npm-versions@0.3.1 96 | tracker@1.1.1 97 | twitter@1.1.14 98 | ui@1.0.12 99 | underscore@1.0.10 100 | url@1.0.11 101 | webapp@1.3.12 102 | webapp-hashing@1.0.9 103 | -------------------------------------------------------------------------------- /end of #7/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | aldeed:collection2-core@2.0.0 10 | allow-deny@1.0.5 11 | autoupdate@1.2.11 12 | babel-compiler@6.13.0 13 | babel-runtime@1.0.1 14 | base64@1.0.10 15 | binary-heap@1.0.10 16 | blaze@2.1.9 17 | blaze-html-templates@1.0.5 18 | blaze-tools@1.0.10 19 | boilerplate-generator@1.0.11 20 | caching-compiler@1.1.9 21 | caching-html-compiler@1.0.7 22 | callback-hook@1.0.10 23 | check@1.2.4 24 | ddp@1.2.5 25 | ddp-client@1.2.9 26 | ddp-common@1.2.8 27 | ddp-rate-limiter@1.0.6 28 | ddp-server@1.2.10 29 | deps@1.0.12 30 | diff-sequence@1.0.7 31 | ecmascript@0.6.1 32 | ecmascript-runtime@0.3.15 33 | ejson@1.0.13 34 | email@1.1.18 35 | es5-shim@4.6.15 36 | facebook@1.2.10 37 | fastclick@1.0.13 38 | geojson-utils@1.0.10 39 | google@1.1.15 40 | hot-code-push@1.0.4 41 | html-tools@1.0.11 42 | htmljs@1.0.11 43 | http@1.2.10 44 | id-map@1.0.9 45 | jquery@1.11.10 46 | jsx@0.2.4 47 | launch-screen@1.0.12 48 | less@2.5.7 49 | livedata@1.0.18 50 | localstorage@1.0.12 51 | logging@1.1.16 52 | meteor@1.6.0 53 | meteor-base@1.0.4 54 | minifier-css@1.2.15 55 | minifier-js@1.2.15 56 | minimongo@1.0.19 57 | mobile-experience@1.0.4 58 | mobile-status-bar@1.0.13 59 | modules@0.7.7 60 | modules-runtime@0.7.7 61 | mongo@1.1.14 62 | mongo-id@1.0.6 63 | npm-bcrypt@0.9.2 64 | npm-mongo@2.2.11_2 65 | oauth@1.1.12 66 | oauth1@1.1.11 67 | oauth2@1.1.11 68 | observe-sequence@1.0.14 69 | okgrow:accounts-ui-react@0.7.2 70 | ordered-dict@1.0.9 71 | promise@0.8.8 72 | raix:eventemitter@0.1.3 73 | random@1.0.10 74 | rate-limit@1.0.6 75 | react-meteor-data@0.2.9 76 | reactive-dict@1.1.8 77 | reactive-var@1.0.11 78 | reload@1.1.11 79 | retry@1.0.9 80 | routepolicy@1.0.12 81 | service-configuration@1.0.11 82 | session@1.1.7 83 | sha@1.0.9 84 | shell-server@0.2.1 85 | spacebars@1.0.13 86 | spacebars-compiler@1.0.13 87 | srp@1.0.10 88 | standard-minifier-css@1.3.2 89 | standard-minifier-js@1.2.1 90 | templating@1.2.15 91 | templating-compiler@1.2.15 92 | templating-runtime@1.2.15 93 | templating-tools@1.0.5 94 | thereactivestack:blazetoreact@1.0.2 95 | tmeasday:check-npm-versions@0.3.1 96 | tracker@1.1.1 97 | twitter@1.1.14 98 | ui@1.0.12 99 | underscore@1.0.10 100 | url@1.0.11 101 | webapp@1.3.12 102 | webapp-hashing@1.0.9 103 | -------------------------------------------------------------------------------- /end of #8/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | aldeed:collection2-core@2.0.0 10 | allow-deny@1.0.5 11 | autoupdate@1.2.11 12 | babel-compiler@6.13.0 13 | babel-runtime@1.0.1 14 | base64@1.0.10 15 | binary-heap@1.0.10 16 | blaze@2.1.9 17 | blaze-html-templates@1.0.5 18 | blaze-tools@1.0.10 19 | boilerplate-generator@1.0.11 20 | caching-compiler@1.1.9 21 | caching-html-compiler@1.0.7 22 | callback-hook@1.0.10 23 | check@1.2.4 24 | ddp@1.2.5 25 | ddp-client@1.2.9 26 | ddp-common@1.2.8 27 | ddp-rate-limiter@1.0.6 28 | ddp-server@1.2.10 29 | deps@1.0.12 30 | diff-sequence@1.0.7 31 | ecmascript@0.6.1 32 | ecmascript-runtime@0.3.15 33 | ejson@1.0.13 34 | email@1.1.18 35 | es5-shim@4.6.15 36 | facebook@1.2.10 37 | fastclick@1.0.13 38 | geojson-utils@1.0.10 39 | google@1.1.15 40 | hot-code-push@1.0.4 41 | html-tools@1.0.11 42 | htmljs@1.0.11 43 | http@1.2.10 44 | id-map@1.0.9 45 | jquery@1.11.10 46 | jsx@0.2.4 47 | launch-screen@1.0.12 48 | less@2.5.7 49 | livedata@1.0.18 50 | localstorage@1.0.12 51 | logging@1.1.16 52 | meteor@1.6.0 53 | meteor-base@1.0.4 54 | minifier-css@1.2.15 55 | minifier-js@1.2.15 56 | minimongo@1.0.19 57 | mobile-experience@1.0.4 58 | mobile-status-bar@1.0.13 59 | modules@0.7.7 60 | modules-runtime@0.7.7 61 | mongo@1.1.14 62 | mongo-id@1.0.6 63 | npm-bcrypt@0.9.2 64 | npm-mongo@2.2.11_2 65 | oauth@1.1.12 66 | oauth1@1.1.11 67 | oauth2@1.1.11 68 | observe-sequence@1.0.14 69 | okgrow:accounts-ui-react@0.7.2 70 | ordered-dict@1.0.9 71 | promise@0.8.8 72 | raix:eventemitter@0.1.3 73 | random@1.0.10 74 | rate-limit@1.0.6 75 | react-meteor-data@0.2.9 76 | reactive-dict@1.1.8 77 | reactive-var@1.0.11 78 | reload@1.1.11 79 | retry@1.0.9 80 | routepolicy@1.0.12 81 | service-configuration@1.0.11 82 | session@1.1.7 83 | sha@1.0.9 84 | shell-server@0.2.1 85 | spacebars@1.0.13 86 | spacebars-compiler@1.0.13 87 | srp@1.0.10 88 | standard-minifier-css@1.3.2 89 | standard-minifier-js@1.2.1 90 | templating@1.2.15 91 | templating-compiler@1.2.15 92 | templating-runtime@1.2.15 93 | templating-tools@1.0.5 94 | thereactivestack:blazetoreact@1.0.2 95 | tmeasday:check-npm-versions@0.3.1 96 | tracker@1.1.1 97 | twitter@1.1.14 98 | ui@1.0.12 99 | underscore@1.0.10 100 | url@1.0.11 101 | webapp@1.3.12 102 | webapp-hashing@1.0.9 103 | -------------------------------------------------------------------------------- /end of #10/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | alanning:roles@1.2.15 10 | aldeed:collection2-core@2.0.0 11 | allow-deny@1.0.5 12 | autoupdate@1.2.11 13 | babel-compiler@6.13.0 14 | babel-runtime@1.0.1 15 | base64@1.0.10 16 | binary-heap@1.0.10 17 | blaze@2.1.9 18 | blaze-html-templates@1.0.5 19 | blaze-tools@1.0.10 20 | boilerplate-generator@1.0.11 21 | caching-compiler@1.1.9 22 | caching-html-compiler@1.0.7 23 | callback-hook@1.0.10 24 | check@1.2.4 25 | ddp@1.2.5 26 | ddp-client@1.2.9 27 | ddp-common@1.2.8 28 | ddp-rate-limiter@1.0.6 29 | ddp-server@1.2.10 30 | deps@1.0.12 31 | diff-sequence@1.0.7 32 | ecmascript@0.6.1 33 | ecmascript-runtime@0.3.15 34 | ejson@1.0.13 35 | email@1.1.18 36 | es5-shim@4.6.15 37 | facebook@1.2.10 38 | fastclick@1.0.13 39 | geojson-utils@1.0.10 40 | google@1.1.15 41 | hot-code-push@1.0.4 42 | html-tools@1.0.11 43 | htmljs@1.0.11 44 | http@1.2.10 45 | id-map@1.0.9 46 | jquery@1.11.10 47 | jsx@0.2.4 48 | launch-screen@1.0.12 49 | less@2.5.7 50 | livedata@1.0.18 51 | localstorage@1.0.12 52 | logging@1.1.16 53 | meteor@1.6.0 54 | meteor-base@1.0.4 55 | minifier-css@1.2.15 56 | minifier-js@1.2.15 57 | minimongo@1.0.19 58 | mobile-experience@1.0.4 59 | mobile-status-bar@1.0.13 60 | modules@0.7.7 61 | modules-runtime@0.7.7 62 | mongo@1.1.14 63 | mongo-id@1.0.6 64 | npm-bcrypt@0.9.2 65 | npm-mongo@2.2.11_2 66 | oauth@1.1.12 67 | oauth1@1.1.11 68 | oauth2@1.1.11 69 | observe-sequence@1.0.14 70 | okgrow:accounts-ui-react@0.7.2 71 | ordered-dict@1.0.9 72 | promise@0.8.8 73 | raix:eventemitter@0.1.3 74 | random@1.0.10 75 | rate-limit@1.0.6 76 | react-meteor-data@0.2.9 77 | reactive-dict@1.1.8 78 | reactive-var@1.0.11 79 | reload@1.1.11 80 | retry@1.0.9 81 | routepolicy@1.0.12 82 | service-configuration@1.0.11 83 | session@1.1.7 84 | sha@1.0.9 85 | shell-server@0.2.1 86 | spacebars@1.0.13 87 | spacebars-compiler@1.0.13 88 | srp@1.0.10 89 | standard-minifier-css@1.3.2 90 | standard-minifier-js@1.2.1 91 | templating@1.2.15 92 | templating-compiler@1.2.15 93 | templating-runtime@1.2.15 94 | templating-tools@1.0.5 95 | thereactivestack:blazetoreact@1.0.2 96 | tmeasday:check-npm-versions@0.3.1 97 | tracker@1.1.1 98 | twitter@1.1.14 99 | ui@1.0.12 100 | underscore@1.0.10 101 | url@1.0.11 102 | webapp@1.3.12 103 | webapp-hashing@1.0.9 104 | -------------------------------------------------------------------------------- /end of #11/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | alanning:roles@1.2.15 10 | aldeed:collection2-core@2.0.0 11 | allow-deny@1.0.5 12 | autoupdate@1.2.11 13 | babel-compiler@6.13.0 14 | babel-runtime@1.0.1 15 | base64@1.0.10 16 | binary-heap@1.0.10 17 | blaze@2.1.9 18 | blaze-html-templates@1.0.5 19 | blaze-tools@1.0.10 20 | boilerplate-generator@1.0.11 21 | caching-compiler@1.1.9 22 | caching-html-compiler@1.0.7 23 | callback-hook@1.0.10 24 | check@1.2.4 25 | ddp@1.2.5 26 | ddp-client@1.2.9 27 | ddp-common@1.2.8 28 | ddp-rate-limiter@1.0.6 29 | ddp-server@1.2.10 30 | deps@1.0.12 31 | diff-sequence@1.0.7 32 | ecmascript@0.6.1 33 | ecmascript-runtime@0.3.15 34 | ejson@1.0.13 35 | email@1.1.18 36 | es5-shim@4.6.15 37 | facebook@1.2.10 38 | fastclick@1.0.13 39 | geojson-utils@1.0.10 40 | google@1.1.15 41 | hot-code-push@1.0.4 42 | html-tools@1.0.11 43 | htmljs@1.0.11 44 | http@1.2.10 45 | id-map@1.0.9 46 | jquery@1.11.10 47 | jsx@0.2.4 48 | launch-screen@1.0.12 49 | less@2.5.7 50 | livedata@1.0.18 51 | localstorage@1.0.12 52 | logging@1.1.16 53 | meteor@1.6.0 54 | meteor-base@1.0.4 55 | minifier-css@1.2.15 56 | minifier-js@1.2.15 57 | minimongo@1.0.19 58 | mobile-experience@1.0.4 59 | mobile-status-bar@1.0.13 60 | modules@0.7.7 61 | modules-runtime@0.7.7 62 | mongo@1.1.14 63 | mongo-id@1.0.6 64 | npm-bcrypt@0.9.2 65 | npm-mongo@2.2.11_2 66 | oauth@1.1.12 67 | oauth1@1.1.11 68 | oauth2@1.1.11 69 | observe-sequence@1.0.14 70 | okgrow:accounts-ui-react@0.7.2 71 | ordered-dict@1.0.9 72 | promise@0.8.8 73 | raix:eventemitter@0.1.3 74 | random@1.0.10 75 | rate-limit@1.0.6 76 | react-meteor-data@0.2.9 77 | reactive-dict@1.1.8 78 | reactive-var@1.0.11 79 | reload@1.1.11 80 | retry@1.0.9 81 | routepolicy@1.0.12 82 | service-configuration@1.0.11 83 | session@1.1.7 84 | sha@1.0.9 85 | shell-server@0.2.1 86 | spacebars@1.0.13 87 | spacebars-compiler@1.0.13 88 | srp@1.0.10 89 | standard-minifier-css@1.3.2 90 | standard-minifier-js@1.2.1 91 | templating@1.2.15 92 | templating-compiler@1.2.15 93 | templating-runtime@1.2.15 94 | templating-tools@1.0.5 95 | thereactivestack:blazetoreact@1.0.2 96 | tmeasday:check-npm-versions@0.3.1 97 | tracker@1.1.1 98 | twitter@1.1.14 99 | ui@1.0.12 100 | underscore@1.0.10 101 | url@1.0.11 102 | webapp@1.3.12 103 | webapp-hashing@1.0.9 104 | -------------------------------------------------------------------------------- /end of #14/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | alanning:roles@1.2.15 10 | aldeed:collection2-core@2.0.0 11 | allow-deny@1.0.5 12 | autoupdate@1.2.11 13 | babel-compiler@6.13.0 14 | babel-runtime@1.0.1 15 | base64@1.0.10 16 | binary-heap@1.0.10 17 | blaze@2.1.9 18 | blaze-html-templates@1.0.5 19 | blaze-tools@1.0.10 20 | boilerplate-generator@1.0.11 21 | caching-compiler@1.1.9 22 | caching-html-compiler@1.0.7 23 | callback-hook@1.0.10 24 | check@1.2.4 25 | ddp@1.2.5 26 | ddp-client@1.2.9 27 | ddp-common@1.2.8 28 | ddp-rate-limiter@1.0.6 29 | ddp-server@1.2.10 30 | deps@1.0.12 31 | diff-sequence@1.0.7 32 | ecmascript@0.6.1 33 | ecmascript-runtime@0.3.15 34 | ejson@1.0.13 35 | email@1.1.18 36 | es5-shim@4.6.15 37 | facebook@1.2.10 38 | fastclick@1.0.13 39 | geojson-utils@1.0.10 40 | google@1.1.15 41 | hot-code-push@1.0.4 42 | html-tools@1.0.11 43 | htmljs@1.0.11 44 | http@1.2.10 45 | id-map@1.0.9 46 | jquery@1.11.10 47 | jsx@0.2.4 48 | launch-screen@1.0.12 49 | less@2.5.7 50 | livedata@1.0.18 51 | localstorage@1.0.12 52 | logging@1.1.16 53 | meteor@1.6.0 54 | meteor-base@1.0.4 55 | minifier-css@1.2.15 56 | minifier-js@1.2.15 57 | minimongo@1.0.19 58 | mobile-experience@1.0.4 59 | mobile-status-bar@1.0.13 60 | modules@0.7.7 61 | modules-runtime@0.7.7 62 | mongo@1.1.14 63 | mongo-id@1.0.6 64 | npm-bcrypt@0.9.2 65 | npm-mongo@2.2.11_2 66 | oauth@1.1.12 67 | oauth1@1.1.11 68 | oauth2@1.1.11 69 | observe-sequence@1.0.14 70 | okgrow:accounts-ui-react@0.7.2 71 | ordered-dict@1.0.9 72 | promise@0.8.8 73 | raix:eventemitter@0.1.3 74 | random@1.0.10 75 | rate-limit@1.0.6 76 | react-meteor-data@0.2.9 77 | reactive-dict@1.1.8 78 | reactive-var@1.0.11 79 | reload@1.1.11 80 | retry@1.0.9 81 | routepolicy@1.0.12 82 | service-configuration@1.0.11 83 | session@1.1.7 84 | sha@1.0.9 85 | shell-server@0.2.1 86 | spacebars@1.0.13 87 | spacebars-compiler@1.0.13 88 | srp@1.0.10 89 | standard-minifier-css@1.3.2 90 | standard-minifier-js@1.2.1 91 | templating@1.2.15 92 | templating-compiler@1.2.15 93 | templating-runtime@1.2.15 94 | templating-tools@1.0.5 95 | thereactivestack:blazetoreact@1.0.2 96 | tmeasday:check-npm-versions@0.3.1 97 | tracker@1.1.1 98 | twitter@1.1.14 99 | ui@1.0.12 100 | underscore@1.0.10 101 | url@1.0.11 102 | webapp@1.3.12 103 | webapp-hashing@1.0.9 104 | -------------------------------------------------------------------------------- /end of #15/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | alanning:roles@1.2.15 10 | aldeed:collection2-core@2.0.0 11 | allow-deny@1.0.5 12 | autoupdate@1.2.11 13 | babel-compiler@6.13.0 14 | babel-runtime@1.0.1 15 | base64@1.0.10 16 | binary-heap@1.0.10 17 | blaze@2.1.9 18 | blaze-html-templates@1.0.5 19 | blaze-tools@1.0.10 20 | boilerplate-generator@1.0.11 21 | caching-compiler@1.1.9 22 | caching-html-compiler@1.0.7 23 | callback-hook@1.0.10 24 | check@1.2.4 25 | ddp@1.2.5 26 | ddp-client@1.2.9 27 | ddp-common@1.2.8 28 | ddp-rate-limiter@1.0.6 29 | ddp-server@1.2.10 30 | deps@1.0.12 31 | diff-sequence@1.0.7 32 | ecmascript@0.6.1 33 | ecmascript-runtime@0.3.15 34 | ejson@1.0.13 35 | email@1.1.18 36 | es5-shim@4.6.15 37 | facebook@1.2.10 38 | fastclick@1.0.13 39 | geojson-utils@1.0.10 40 | google@1.1.15 41 | hot-code-push@1.0.4 42 | html-tools@1.0.11 43 | htmljs@1.0.11 44 | http@1.2.10 45 | id-map@1.0.9 46 | jquery@1.11.10 47 | jsx@0.2.4 48 | launch-screen@1.0.12 49 | less@2.5.7 50 | livedata@1.0.18 51 | localstorage@1.0.12 52 | logging@1.1.16 53 | meteor@1.6.0 54 | meteor-base@1.0.4 55 | minifier-css@1.2.15 56 | minifier-js@1.2.15 57 | minimongo@1.0.19 58 | mobile-experience@1.0.4 59 | mobile-status-bar@1.0.13 60 | modules@0.7.7 61 | modules-runtime@0.7.7 62 | mongo@1.1.14 63 | mongo-id@1.0.6 64 | npm-bcrypt@0.9.2 65 | npm-mongo@2.2.11_2 66 | oauth@1.1.12 67 | oauth1@1.1.11 68 | oauth2@1.1.11 69 | observe-sequence@1.0.14 70 | okgrow:accounts-ui-react@0.7.2 71 | ordered-dict@1.0.9 72 | promise@0.8.8 73 | raix:eventemitter@0.1.3 74 | random@1.0.10 75 | rate-limit@1.0.6 76 | react-meteor-data@0.2.9 77 | reactive-dict@1.1.8 78 | reactive-var@1.0.11 79 | reload@1.1.11 80 | retry@1.0.9 81 | routepolicy@1.0.12 82 | service-configuration@1.0.11 83 | session@1.1.7 84 | sha@1.0.9 85 | shell-server@0.2.1 86 | spacebars@1.0.13 87 | spacebars-compiler@1.0.13 88 | srp@1.0.10 89 | standard-minifier-css@1.3.2 90 | standard-minifier-js@1.2.1 91 | templating@1.2.15 92 | templating-compiler@1.2.15 93 | templating-runtime@1.2.15 94 | templating-tools@1.0.5 95 | thereactivestack:blazetoreact@1.0.2 96 | tmeasday:check-npm-versions@0.3.1 97 | tracker@1.1.1 98 | twitter@1.1.14 99 | ui@1.0.12 100 | underscore@1.0.10 101 | url@1.0.11 102 | webapp@1.3.12 103 | webapp-hashing@1.0.9 104 | -------------------------------------------------------------------------------- /end of #15/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | 5 | import Item from './Item'; 6 | import IsRole from './utilities/IsRole'; 7 | 8 | import Items from '../api/Items'; 9 | 10 | @autobind 11 | class App extends Component { 12 | addItems(event) { 13 | event.preventDefault(); 14 | const itemOne = this.refs.itemOne.value.trim(); 15 | const itemTwo = this.refs.itemTwo.value.trim(); 16 | if (itemOne !== '' && itemTwo !== '') { 17 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 18 | if(!err) { 19 | this.refs.itemOne.value = ''; 20 | this.refs.itemTwo.value = ''; 21 | } 22 | }); 23 | } 24 | } 25 | 26 | showAll() { 27 | if(this.props.showAll) { 28 | Session.set('showAll', false); 29 | } else { 30 | Session.set('showAll', true); 31 | } 32 | 33 | } 34 | 35 | render() { 36 | if (!this.props.ready) { 37 | return
Loading
; 38 | } 39 | const test = true; 40 | return ( 41 |
42 | 43 | 46 | 47 | {test && 48 |
i'm inline conditional
49 | } 50 | {test ?
i'm inline conditional
:
Not allowed
} 51 |
52 | 53 | 54 | 55 |
56 | {this.props.items.map((item) => { 57 | return 58 | })} 59 |
60 | ); 61 | } 62 | } 63 | 64 | export default createContainer(({params}) => { 65 | let itemsSub = Meteor.subscribe('allItems'); 66 | let userSub = Meteor.subscribe('currentUser'); 67 | let showAll = Session.get('showAll'); 68 | 69 | let itemsArray; 70 | if (params.id) { 71 | itemsArray = Items.find({_id: params.id}).fetch(); 72 | } else { 73 | itemsArray = Items.find({}, { 74 | limit: showAll ? 50 : 1, 75 | sort: { lastUpdated: 1 } 76 | }).fetch() 77 | } 78 | return { 79 | showAll, 80 | ready: itemsSub.ready() && userSub.ready(), 81 | items: itemsArray 82 | } 83 | }, App); 84 | -------------------------------------------------------------------------------- /end of #16/.meteor/versions: -------------------------------------------------------------------------------- 1 | accounts-base@1.2.14 2 | accounts-facebook@1.0.11 3 | accounts-google@1.0.11 4 | accounts-oauth@1.1.15 5 | accounts-password@1.3.3 6 | accounts-twitter@1.1.12 7 | accounts-ui@1.1.8 8 | accounts-ui-unstyled@1.1.11 9 | alanning:roles@1.2.15 10 | aldeed:collection2-core@2.0.0 11 | allow-deny@1.0.5 12 | autoupdate@1.2.11 13 | babel-compiler@6.13.0 14 | babel-runtime@1.0.1 15 | base64@1.0.10 16 | binary-heap@1.0.10 17 | blaze@2.1.9 18 | blaze-html-templates@1.0.5 19 | blaze-tools@1.0.10 20 | boilerplate-generator@1.0.11 21 | caching-compiler@1.1.9 22 | caching-html-compiler@1.0.7 23 | callback-hook@1.0.10 24 | check@1.2.4 25 | ddp@1.2.5 26 | ddp-client@1.2.9 27 | ddp-common@1.2.8 28 | ddp-rate-limiter@1.0.6 29 | ddp-server@1.2.10 30 | deps@1.0.12 31 | diff-sequence@1.0.7 32 | ecmascript@0.6.1 33 | ecmascript-runtime@0.3.15 34 | ejson@1.0.13 35 | email@1.1.18 36 | es5-shim@4.6.15 37 | facebook@1.2.10 38 | fastclick@1.0.13 39 | geojson-utils@1.0.10 40 | google@1.1.15 41 | hot-code-push@1.0.4 42 | html-tools@1.0.11 43 | htmljs@1.0.11 44 | http@1.2.10 45 | id-map@1.0.9 46 | jquery@1.11.10 47 | jsx@0.2.4 48 | launch-screen@1.0.12 49 | less@2.5.7 50 | livedata@1.0.18 51 | localstorage@1.0.12 52 | logging@1.1.16 53 | meteor@1.6.0 54 | meteor-base@1.0.4 55 | minifier-css@1.2.15 56 | minifier-js@1.2.15 57 | minimongo@1.0.19 58 | mobile-experience@1.0.4 59 | mobile-status-bar@1.0.13 60 | modules@0.7.7 61 | modules-runtime@0.7.7 62 | mongo@1.1.14 63 | mongo-id@1.0.6 64 | npm-bcrypt@0.9.2 65 | npm-mongo@2.2.11_2 66 | oauth@1.1.12 67 | oauth1@1.1.11 68 | oauth2@1.1.11 69 | observe-sequence@1.0.14 70 | okgrow:accounts-ui-react@0.7.2 71 | ordered-dict@1.0.9 72 | promise@0.8.8 73 | raix:eventemitter@0.1.3 74 | random@1.0.10 75 | rate-limit@1.0.6 76 | react-meteor-data@0.2.9 77 | reactive-dict@1.1.8 78 | reactive-var@1.0.11 79 | reload@1.1.11 80 | retry@1.0.9 81 | routepolicy@1.0.12 82 | service-configuration@1.0.11 83 | session@1.1.7 84 | sha@1.0.9 85 | shell-server@0.2.1 86 | spacebars@1.0.13 87 | spacebars-compiler@1.0.13 88 | srp@1.0.10 89 | standard-minifier-css@1.3.2 90 | standard-minifier-js@1.2.1 91 | templating@1.2.15 92 | templating-compiler@1.2.15 93 | templating-runtime@1.2.15 94 | templating-tools@1.0.5 95 | thereactivestack:blazetoreact@1.0.2 96 | tmeasday:check-npm-versions@0.3.1 97 | tracker@1.1.1 98 | twitter@1.1.14 99 | ui@1.0.12 100 | underscore@1.0.10 101 | url@1.0.11 102 | webapp@1.3.12 103 | webapp-hashing@1.0.9 104 | -------------------------------------------------------------------------------- /end of #16/imports/client/App.js: -------------------------------------------------------------------------------- 1 | import React, { Component } from 'react'; 2 | import { createContainer } from 'meteor/react-meteor-data'; 3 | import { autobind } from 'core-decorators'; 4 | import ReactCSSTransitionGroup from 'react-addons-css-transition-group' 5 | 6 | import Item from './Item'; 7 | import IsRole from './utilities/IsRole'; 8 | 9 | import Items from '../api/Items'; 10 | 11 | @autobind 12 | class App extends Component { 13 | addItems(event) { 14 | event.preventDefault(); 15 | const itemOne = this.refs.itemOne.value.trim(); 16 | const itemTwo = this.refs.itemTwo.value.trim(); 17 | if (itemOne !== '' && itemTwo !== '') { 18 | Meteor.call('insertNewItem', itemOne, itemTwo, (err, res) => { 19 | if(!err) { 20 | this.refs.itemOne.value = ''; 21 | this.refs.itemTwo.value = ''; 22 | } 23 | }); 24 | } 25 | } 26 | 27 | showAll() { 28 | if(this.props.showAll) { 29 | Session.set('showAll', false); 30 | } else { 31 | Session.set('showAll', true); 32 | } 33 | 34 | } 35 | 36 | render() { 37 | if (!this.props.ready) { 38 | return
Loading
; 39 | } 40 | const test = true; 41 | return ( 42 |
43 | 44 | 47 | 48 | {test && 49 |
i'm inline conditional
50 | } 51 | {test ?
i'm inline conditional
:
Not allowed
} 52 |
53 | 54 | 55 | 56 |
57 | 63 | {this.props.items.map((item) => { 64 | return 65 | })} 66 | 67 |
68 | ); 69 | } 70 | } 71 | 72 | export default createContainer(({params}) => { 73 | let itemsSub = Meteor.subscribe('allItems'); 74 | let userSub = Meteor.subscribe('currentUser'); 75 | let showAll = Session.get('showAll'); 76 | 77 | let itemsArray; 78 | if (params.id) { 79 | itemsArray = Items.find({_id: params.id}).fetch(); 80 | } else { 81 | itemsArray = Items.find({}, { 82 | limit: showAll ? 50 : 1, 83 | sort: { lastUpdated: 1 } 84 | }).fetch() 85 | } 86 | return { 87 | showAll, 88 | ready: itemsSub.ready() && userSub.ready(), 89 | items: itemsArray 90 | } 91 | }, App); 92 | -------------------------------------------------------------------------------- /end of #10/client/main.css: -------------------------------------------------------------------------------- 1 | /* CSS declarations go here */ 2 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ 3 | 4 | /** 5 | * 1. Change the default font family in all browsers (opinionated). 6 | * 2. Prevent adjustments of font size after orientation changes in IE and iOS. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove the margin in all browsers (opinionated). 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Add the correct display in IE 9-. 28 | * 1. Add the correct display in Edge, IE, and Firefox. 29 | * 2. Add the correct display in IE. 30 | */ 31 | 32 | article, 33 | aside, 34 | details, /* 1 */ 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | main, /* 2 */ 40 | menu, 41 | nav, 42 | section, 43 | summary { /* 1 */ 44 | display: block; 45 | } 46 | 47 | /** 48 | * Add the correct display in IE 9-. 49 | */ 50 | 51 | audio, 52 | canvas, 53 | progress, 54 | video { 55 | display: inline-block; 56 | } 57 | 58 | /** 59 | * Add the correct display in iOS 4-7. 60 | */ 61 | 62 | audio:not([controls]) { 63 | display: none; 64 | height: 0; 65 | } 66 | 67 | /** 68 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 69 | */ 70 | 71 | progress { 72 | vertical-align: baseline; 73 | } 74 | 75 | /** 76 | * Add the correct display in IE 10-. 77 | * 1. Add the correct display in IE. 78 | */ 79 | 80 | template, /* 1 */ 81 | [hidden] { 82 | display: none; 83 | } 84 | 85 | /* Links 86 | ========================================================================== */ 87 | 88 | /** 89 | * 1. Remove the gray background on active links in IE 10. 90 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 91 | */ 92 | 93 | a { 94 | background-color: transparent; /* 1 */ 95 | -webkit-text-decoration-skip: objects; /* 2 */ 96 | } 97 | 98 | /** 99 | * Remove the outline on focused links when they are also active or hovered 100 | * in all browsers (opinionated). 101 | */ 102 | 103 | a:active, 104 | a:hover { 105 | outline-width: 0; 106 | } 107 | 108 | /* Text-level semantics 109 | ========================================================================== */ 110 | 111 | /** 112 | * 1. Remove the bottom border in Firefox 39-. 113 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 114 | */ 115 | 116 | abbr[title] { 117 | border-bottom: none; /* 1 */ 118 | text-decoration: underline; /* 2 */ 119 | text-decoration: underline dotted; /* 2 */ 120 | } 121 | 122 | /** 123 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 124 | */ 125 | 126 | b, 127 | strong { 128 | font-weight: inherit; 129 | } 130 | 131 | /** 132 | * Add the correct font weight in Chrome, Edge, and Safari. 133 | */ 134 | 135 | b, 136 | strong { 137 | font-weight: bolder; 138 | } 139 | 140 | /** 141 | * Add the correct font style in Android 4.3-. 142 | */ 143 | 144 | dfn { 145 | font-style: italic; 146 | } 147 | 148 | /** 149 | * Correct the font size and margin on `h1` elements within `section` and 150 | * `article` contexts in Chrome, Firefox, and Safari. 151 | */ 152 | 153 | h1 { 154 | font-size: 2em; 155 | margin: 0.67em 0; 156 | } 157 | 158 | /** 159 | * Add the correct background and color in IE 9-. 160 | */ 161 | 162 | mark { 163 | background-color: #ff0; 164 | color: #000; 165 | } 166 | 167 | /** 168 | * Add the correct font size in all browsers. 169 | */ 170 | 171 | small { 172 | font-size: 80%; 173 | } 174 | 175 | /** 176 | * Prevent `sub` and `sup` elements from affecting the line height in 177 | * all browsers. 178 | */ 179 | 180 | sub, 181 | sup { 182 | font-size: 75%; 183 | line-height: 0; 184 | position: relative; 185 | vertical-align: baseline; 186 | } 187 | 188 | sub { 189 | bottom: -0.25em; 190 | } 191 | 192 | sup { 193 | top: -0.5em; 194 | } 195 | 196 | /* Embedded content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Remove the border on images inside links in IE 10-. 201 | */ 202 | 203 | img { 204 | border-style: none; 205 | } 206 | 207 | /** 208 | * Hide the overflow in IE. 209 | */ 210 | 211 | svg:not(:root) { 212 | overflow: hidden; 213 | } 214 | 215 | /* Grouping content 216 | ========================================================================== */ 217 | 218 | /** 219 | * 1. Correct the inheritance and scaling of font size in all browsers. 220 | * 2. Correct the odd `em` font sizing in all browsers. 221 | */ 222 | 223 | code, 224 | kbd, 225 | pre, 226 | samp { 227 | font-family: monospace, monospace; /* 1 */ 228 | font-size: 1em; /* 2 */ 229 | } 230 | 231 | /** 232 | * Add the correct margin in IE 8. 233 | */ 234 | 235 | figure { 236 | margin: 1em 40px; 237 | } 238 | 239 | /** 240 | * 1. Add the correct box sizing in Firefox. 241 | * 2. Show the overflow in Edge and IE. 242 | */ 243 | 244 | hr { 245 | box-sizing: content-box; /* 1 */ 246 | height: 0; /* 1 */ 247 | overflow: visible; /* 2 */ 248 | } 249 | 250 | /* Forms 251 | ========================================================================== */ 252 | 253 | /** 254 | * 1. Change font properties to `inherit` in all browsers (opinionated). 255 | * 2. Remove the margin in Firefox and Safari. 256 | */ 257 | 258 | button, 259 | input, 260 | select, 261 | textarea { 262 | font: inherit; /* 1 */ 263 | margin: 0; /* 2 */ 264 | } 265 | 266 | /** 267 | * Restore the font weight unset by the previous rule. 268 | */ 269 | 270 | optgroup { 271 | font-weight: bold; 272 | } 273 | 274 | /** 275 | * Show the overflow in IE. 276 | * 1. Show the overflow in Edge. 277 | */ 278 | 279 | button, 280 | input { /* 1 */ 281 | overflow: visible; 282 | } 283 | 284 | /** 285 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 286 | * 1. Remove the inheritance of text transform in Firefox. 287 | */ 288 | 289 | button, 290 | select { /* 1 */ 291 | text-transform: none; 292 | } 293 | 294 | /** 295 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 296 | * controls in Android 4. 297 | * 2. Correct the inability to style clickable types in iOS and Safari. 298 | */ 299 | 300 | button, 301 | html [type="button"], /* 1 */ 302 | [type="reset"], 303 | [type="submit"] { 304 | -webkit-appearance: button; /* 2 */ 305 | } 306 | 307 | /** 308 | * Remove the inner border and padding in Firefox. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | [type="button"]::-moz-focus-inner, 313 | [type="reset"]::-moz-focus-inner, 314 | [type="submit"]::-moz-focus-inner { 315 | border-style: none; 316 | padding: 0; 317 | } 318 | 319 | /** 320 | * Restore the focus styles unset by the previous rule. 321 | */ 322 | 323 | button:-moz-focusring, 324 | [type="button"]:-moz-focusring, 325 | [type="reset"]:-moz-focusring, 326 | [type="submit"]:-moz-focusring { 327 | outline: 1px dotted ButtonText; 328 | } 329 | 330 | /** 331 | * Change the border, margin, and padding in all browsers (opinionated). 332 | */ 333 | 334 | fieldset { 335 | border: 1px solid #c0c0c0; 336 | margin: 0 2px; 337 | padding: 0.35em 0.625em 0.75em; 338 | } 339 | 340 | /** 341 | * 1. Correct the text wrapping in Edge and IE. 342 | * 2. Correct the color inheritance from `fieldset` elements in IE. 343 | * 3. Remove the padding so developers are not caught out when they zero out 344 | * `fieldset` elements in all browsers. 345 | */ 346 | 347 | legend { 348 | box-sizing: border-box; /* 1 */ 349 | color: inherit; /* 2 */ 350 | display: table; /* 1 */ 351 | max-width: 100%; /* 1 */ 352 | padding: 0; /* 3 */ 353 | white-space: normal; /* 1 */ 354 | } 355 | 356 | /** 357 | * Remove the default vertical scrollbar in IE. 358 | */ 359 | 360 | textarea { 361 | overflow: auto; 362 | } 363 | 364 | /** 365 | * 1. Add the correct box sizing in IE 10-. 366 | * 2. Remove the padding in IE 10-. 367 | */ 368 | 369 | [type="checkbox"], 370 | [type="radio"] { 371 | box-sizing: border-box; /* 1 */ 372 | padding: 0; /* 2 */ 373 | } 374 | 375 | /** 376 | * Correct the cursor style of increment and decrement buttons in Chrome. 377 | */ 378 | 379 | [type="number"]::-webkit-inner-spin-button, 380 | [type="number"]::-webkit-outer-spin-button { 381 | height: auto; 382 | } 383 | 384 | /** 385 | * 1. Correct the odd appearance in Chrome and Safari. 386 | * 2. Correct the outline style in Safari. 387 | */ 388 | 389 | [type="search"] { 390 | -webkit-appearance: textfield; /* 1 */ 391 | outline-offset: -2px; /* 2 */ 392 | } 393 | 394 | /** 395 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 396 | */ 397 | 398 | [type="search"]::-webkit-search-cancel-button, 399 | [type="search"]::-webkit-search-decoration { 400 | -webkit-appearance: none; 401 | } 402 | 403 | /** 404 | * Correct the text style of placeholders in Chrome, Edge, and Safari. 405 | */ 406 | 407 | ::-webkit-input-placeholder { 408 | color: inherit; 409 | opacity: 0.54; 410 | } 411 | 412 | /** 413 | * 1. Correct the inability to style clickable types in iOS and Safari. 414 | * 2. Change font properties to `inherit` in Safari. 415 | */ 416 | 417 | ::-webkit-file-upload-button { 418 | -webkit-appearance: button; /* 1 */ 419 | font: inherit; /* 2 */ 420 | } 421 | 422 | header { 423 | background: #EEE; 424 | padding: 20px; 425 | text-align: center; 426 | } 427 | 428 | h1 { 429 | margin: 0; 430 | } 431 | 432 | main { 433 | max-width: 1000px; 434 | margin: 0 auto; 435 | padding: 20px; 436 | } 437 | input[type='text'] { 438 | width: 45%; 439 | } 440 | button[type='submit'] { 441 | width: 100%; 442 | border: solid 1px #111; 443 | background: #FFF; 444 | margin-top: 10px; 445 | } 446 | 447 | .item { 448 | margin-top: 20px; 449 | background: #FFF; 450 | box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 451 | padding: 20px; 452 | display: flex; 453 | justify-content: space-between; 454 | } 455 | 456 | .item p { 457 | font-size: 18px; 458 | margin: 0; 459 | } 460 | 461 | .item div { 462 | width: 40%; 463 | cursor: pointer; 464 | padding: 5px; 465 | text-align: center; 466 | transition: 0.3s ease all; 467 | border-bottom: solid 10px; 468 | } 469 | .item .vote-one { 470 | border-bottom-color: blue; 471 | } 472 | 473 | .item .vote-two { 474 | border-bottom-color: red; 475 | } 476 | 477 | .item > span { 478 | font-style: italic; 479 | color: #CCC; 480 | } 481 | 482 | .item div:hover { 483 | background: #EEE; 484 | } 485 | -------------------------------------------------------------------------------- /end of #11/client/main.css: -------------------------------------------------------------------------------- 1 | /* CSS declarations go here */ 2 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ 3 | 4 | /** 5 | * 1. Change the default font family in all browsers (opinionated). 6 | * 2. Prevent adjustments of font size after orientation changes in IE and iOS. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove the margin in all browsers (opinionated). 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Add the correct display in IE 9-. 28 | * 1. Add the correct display in Edge, IE, and Firefox. 29 | * 2. Add the correct display in IE. 30 | */ 31 | 32 | article, 33 | aside, 34 | details, /* 1 */ 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | main, /* 2 */ 40 | menu, 41 | nav, 42 | section, 43 | summary { /* 1 */ 44 | display: block; 45 | } 46 | 47 | /** 48 | * Add the correct display in IE 9-. 49 | */ 50 | 51 | audio, 52 | canvas, 53 | progress, 54 | video { 55 | display: inline-block; 56 | } 57 | 58 | /** 59 | * Add the correct display in iOS 4-7. 60 | */ 61 | 62 | audio:not([controls]) { 63 | display: none; 64 | height: 0; 65 | } 66 | 67 | /** 68 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 69 | */ 70 | 71 | progress { 72 | vertical-align: baseline; 73 | } 74 | 75 | /** 76 | * Add the correct display in IE 10-. 77 | * 1. Add the correct display in IE. 78 | */ 79 | 80 | template, /* 1 */ 81 | [hidden] { 82 | display: none; 83 | } 84 | 85 | /* Links 86 | ========================================================================== */ 87 | 88 | /** 89 | * 1. Remove the gray background on active links in IE 10. 90 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 91 | */ 92 | 93 | a { 94 | background-color: transparent; /* 1 */ 95 | -webkit-text-decoration-skip: objects; /* 2 */ 96 | } 97 | 98 | /** 99 | * Remove the outline on focused links when they are also active or hovered 100 | * in all browsers (opinionated). 101 | */ 102 | 103 | a:active, 104 | a:hover { 105 | outline-width: 0; 106 | } 107 | 108 | /* Text-level semantics 109 | ========================================================================== */ 110 | 111 | /** 112 | * 1. Remove the bottom border in Firefox 39-. 113 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 114 | */ 115 | 116 | abbr[title] { 117 | border-bottom: none; /* 1 */ 118 | text-decoration: underline; /* 2 */ 119 | text-decoration: underline dotted; /* 2 */ 120 | } 121 | 122 | /** 123 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 124 | */ 125 | 126 | b, 127 | strong { 128 | font-weight: inherit; 129 | } 130 | 131 | /** 132 | * Add the correct font weight in Chrome, Edge, and Safari. 133 | */ 134 | 135 | b, 136 | strong { 137 | font-weight: bolder; 138 | } 139 | 140 | /** 141 | * Add the correct font style in Android 4.3-. 142 | */ 143 | 144 | dfn { 145 | font-style: italic; 146 | } 147 | 148 | /** 149 | * Correct the font size and margin on `h1` elements within `section` and 150 | * `article` contexts in Chrome, Firefox, and Safari. 151 | */ 152 | 153 | h1 { 154 | font-size: 2em; 155 | margin: 0.67em 0; 156 | } 157 | 158 | /** 159 | * Add the correct background and color in IE 9-. 160 | */ 161 | 162 | mark { 163 | background-color: #ff0; 164 | color: #000; 165 | } 166 | 167 | /** 168 | * Add the correct font size in all browsers. 169 | */ 170 | 171 | small { 172 | font-size: 80%; 173 | } 174 | 175 | /** 176 | * Prevent `sub` and `sup` elements from affecting the line height in 177 | * all browsers. 178 | */ 179 | 180 | sub, 181 | sup { 182 | font-size: 75%; 183 | line-height: 0; 184 | position: relative; 185 | vertical-align: baseline; 186 | } 187 | 188 | sub { 189 | bottom: -0.25em; 190 | } 191 | 192 | sup { 193 | top: -0.5em; 194 | } 195 | 196 | /* Embedded content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Remove the border on images inside links in IE 10-. 201 | */ 202 | 203 | img { 204 | border-style: none; 205 | } 206 | 207 | /** 208 | * Hide the overflow in IE. 209 | */ 210 | 211 | svg:not(:root) { 212 | overflow: hidden; 213 | } 214 | 215 | /* Grouping content 216 | ========================================================================== */ 217 | 218 | /** 219 | * 1. Correct the inheritance and scaling of font size in all browsers. 220 | * 2. Correct the odd `em` font sizing in all browsers. 221 | */ 222 | 223 | code, 224 | kbd, 225 | pre, 226 | samp { 227 | font-family: monospace, monospace; /* 1 */ 228 | font-size: 1em; /* 2 */ 229 | } 230 | 231 | /** 232 | * Add the correct margin in IE 8. 233 | */ 234 | 235 | figure { 236 | margin: 1em 40px; 237 | } 238 | 239 | /** 240 | * 1. Add the correct box sizing in Firefox. 241 | * 2. Show the overflow in Edge and IE. 242 | */ 243 | 244 | hr { 245 | box-sizing: content-box; /* 1 */ 246 | height: 0; /* 1 */ 247 | overflow: visible; /* 2 */ 248 | } 249 | 250 | /* Forms 251 | ========================================================================== */ 252 | 253 | /** 254 | * 1. Change font properties to `inherit` in all browsers (opinionated). 255 | * 2. Remove the margin in Firefox and Safari. 256 | */ 257 | 258 | button, 259 | input, 260 | select, 261 | textarea { 262 | font: inherit; /* 1 */ 263 | margin: 0; /* 2 */ 264 | } 265 | 266 | /** 267 | * Restore the font weight unset by the previous rule. 268 | */ 269 | 270 | optgroup { 271 | font-weight: bold; 272 | } 273 | 274 | /** 275 | * Show the overflow in IE. 276 | * 1. Show the overflow in Edge. 277 | */ 278 | 279 | button, 280 | input { /* 1 */ 281 | overflow: visible; 282 | } 283 | 284 | /** 285 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 286 | * 1. Remove the inheritance of text transform in Firefox. 287 | */ 288 | 289 | button, 290 | select { /* 1 */ 291 | text-transform: none; 292 | } 293 | 294 | /** 295 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 296 | * controls in Android 4. 297 | * 2. Correct the inability to style clickable types in iOS and Safari. 298 | */ 299 | 300 | button, 301 | html [type="button"], /* 1 */ 302 | [type="reset"], 303 | [type="submit"] { 304 | -webkit-appearance: button; /* 2 */ 305 | } 306 | 307 | /** 308 | * Remove the inner border and padding in Firefox. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | [type="button"]::-moz-focus-inner, 313 | [type="reset"]::-moz-focus-inner, 314 | [type="submit"]::-moz-focus-inner { 315 | border-style: none; 316 | padding: 0; 317 | } 318 | 319 | /** 320 | * Restore the focus styles unset by the previous rule. 321 | */ 322 | 323 | button:-moz-focusring, 324 | [type="button"]:-moz-focusring, 325 | [type="reset"]:-moz-focusring, 326 | [type="submit"]:-moz-focusring { 327 | outline: 1px dotted ButtonText; 328 | } 329 | 330 | /** 331 | * Change the border, margin, and padding in all browsers (opinionated). 332 | */ 333 | 334 | fieldset { 335 | border: 1px solid #c0c0c0; 336 | margin: 0 2px; 337 | padding: 0.35em 0.625em 0.75em; 338 | } 339 | 340 | /** 341 | * 1. Correct the text wrapping in Edge and IE. 342 | * 2. Correct the color inheritance from `fieldset` elements in IE. 343 | * 3. Remove the padding so developers are not caught out when they zero out 344 | * `fieldset` elements in all browsers. 345 | */ 346 | 347 | legend { 348 | box-sizing: border-box; /* 1 */ 349 | color: inherit; /* 2 */ 350 | display: table; /* 1 */ 351 | max-width: 100%; /* 1 */ 352 | padding: 0; /* 3 */ 353 | white-space: normal; /* 1 */ 354 | } 355 | 356 | /** 357 | * Remove the default vertical scrollbar in IE. 358 | */ 359 | 360 | textarea { 361 | overflow: auto; 362 | } 363 | 364 | /** 365 | * 1. Add the correct box sizing in IE 10-. 366 | * 2. Remove the padding in IE 10-. 367 | */ 368 | 369 | [type="checkbox"], 370 | [type="radio"] { 371 | box-sizing: border-box; /* 1 */ 372 | padding: 0; /* 2 */ 373 | } 374 | 375 | /** 376 | * Correct the cursor style of increment and decrement buttons in Chrome. 377 | */ 378 | 379 | [type="number"]::-webkit-inner-spin-button, 380 | [type="number"]::-webkit-outer-spin-button { 381 | height: auto; 382 | } 383 | 384 | /** 385 | * 1. Correct the odd appearance in Chrome and Safari. 386 | * 2. Correct the outline style in Safari. 387 | */ 388 | 389 | [type="search"] { 390 | -webkit-appearance: textfield; /* 1 */ 391 | outline-offset: -2px; /* 2 */ 392 | } 393 | 394 | /** 395 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 396 | */ 397 | 398 | [type="search"]::-webkit-search-cancel-button, 399 | [type="search"]::-webkit-search-decoration { 400 | -webkit-appearance: none; 401 | } 402 | 403 | /** 404 | * Correct the text style of placeholders in Chrome, Edge, and Safari. 405 | */ 406 | 407 | ::-webkit-input-placeholder { 408 | color: inherit; 409 | opacity: 0.54; 410 | } 411 | 412 | /** 413 | * 1. Correct the inability to style clickable types in iOS and Safari. 414 | * 2. Change font properties to `inherit` in Safari. 415 | */ 416 | 417 | ::-webkit-file-upload-button { 418 | -webkit-appearance: button; /* 1 */ 419 | font: inherit; /* 2 */ 420 | } 421 | 422 | header { 423 | background: #EEE; 424 | padding: 20px; 425 | text-align: center; 426 | } 427 | 428 | h1 { 429 | margin: 0; 430 | } 431 | 432 | main { 433 | max-width: 1000px; 434 | margin: 0 auto; 435 | padding: 20px; 436 | } 437 | input[type='text'] { 438 | width: 45%; 439 | } 440 | button[type='submit'] { 441 | width: 100%; 442 | border: solid 1px #111; 443 | background: #FFF; 444 | margin-top: 10px; 445 | } 446 | 447 | .item { 448 | margin-top: 20px; 449 | background: #FFF; 450 | box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 451 | padding: 20px; 452 | display: flex; 453 | justify-content: space-between; 454 | } 455 | 456 | .item p { 457 | font-size: 18px; 458 | margin: 0; 459 | } 460 | 461 | .item div { 462 | width: 40%; 463 | cursor: pointer; 464 | padding: 5px; 465 | text-align: center; 466 | transition: 0.3s ease all; 467 | border-bottom: solid 10px; 468 | } 469 | .item .vote-one { 470 | border-bottom-color: blue; 471 | } 472 | 473 | .item .vote-two { 474 | border-bottom-color: red; 475 | } 476 | 477 | .item > span { 478 | font-style: italic; 479 | color: #CCC; 480 | } 481 | 482 | .item div:hover { 483 | background: #EEE; 484 | } 485 | -------------------------------------------------------------------------------- /end of #14/client/main.css: -------------------------------------------------------------------------------- 1 | /* CSS declarations go here */ 2 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ 3 | 4 | /** 5 | * 1. Change the default font family in all browsers (opinionated). 6 | * 2. Prevent adjustments of font size after orientation changes in IE and iOS. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove the margin in all browsers (opinionated). 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Add the correct display in IE 9-. 28 | * 1. Add the correct display in Edge, IE, and Firefox. 29 | * 2. Add the correct display in IE. 30 | */ 31 | 32 | article, 33 | aside, 34 | details, /* 1 */ 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | main, /* 2 */ 40 | menu, 41 | nav, 42 | section, 43 | summary { /* 1 */ 44 | display: block; 45 | } 46 | 47 | /** 48 | * Add the correct display in IE 9-. 49 | */ 50 | 51 | audio, 52 | canvas, 53 | progress, 54 | video { 55 | display: inline-block; 56 | } 57 | 58 | /** 59 | * Add the correct display in iOS 4-7. 60 | */ 61 | 62 | audio:not([controls]) { 63 | display: none; 64 | height: 0; 65 | } 66 | 67 | /** 68 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 69 | */ 70 | 71 | progress { 72 | vertical-align: baseline; 73 | } 74 | 75 | /** 76 | * Add the correct display in IE 10-. 77 | * 1. Add the correct display in IE. 78 | */ 79 | 80 | template, /* 1 */ 81 | [hidden] { 82 | display: none; 83 | } 84 | 85 | /* Links 86 | ========================================================================== */ 87 | 88 | /** 89 | * 1. Remove the gray background on active links in IE 10. 90 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 91 | */ 92 | 93 | a { 94 | background-color: transparent; /* 1 */ 95 | -webkit-text-decoration-skip: objects; /* 2 */ 96 | } 97 | 98 | /** 99 | * Remove the outline on focused links when they are also active or hovered 100 | * in all browsers (opinionated). 101 | */ 102 | 103 | a:active, 104 | a:hover { 105 | outline-width: 0; 106 | } 107 | 108 | /* Text-level semantics 109 | ========================================================================== */ 110 | 111 | /** 112 | * 1. Remove the bottom border in Firefox 39-. 113 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 114 | */ 115 | 116 | abbr[title] { 117 | border-bottom: none; /* 1 */ 118 | text-decoration: underline; /* 2 */ 119 | text-decoration: underline dotted; /* 2 */ 120 | } 121 | 122 | /** 123 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 124 | */ 125 | 126 | b, 127 | strong { 128 | font-weight: inherit; 129 | } 130 | 131 | /** 132 | * Add the correct font weight in Chrome, Edge, and Safari. 133 | */ 134 | 135 | b, 136 | strong { 137 | font-weight: bolder; 138 | } 139 | 140 | /** 141 | * Add the correct font style in Android 4.3-. 142 | */ 143 | 144 | dfn { 145 | font-style: italic; 146 | } 147 | 148 | /** 149 | * Correct the font size and margin on `h1` elements within `section` and 150 | * `article` contexts in Chrome, Firefox, and Safari. 151 | */ 152 | 153 | h1 { 154 | font-size: 2em; 155 | margin: 0.67em 0; 156 | } 157 | 158 | /** 159 | * Add the correct background and color in IE 9-. 160 | */ 161 | 162 | mark { 163 | background-color: #ff0; 164 | color: #000; 165 | } 166 | 167 | /** 168 | * Add the correct font size in all browsers. 169 | */ 170 | 171 | small { 172 | font-size: 80%; 173 | } 174 | 175 | /** 176 | * Prevent `sub` and `sup` elements from affecting the line height in 177 | * all browsers. 178 | */ 179 | 180 | sub, 181 | sup { 182 | font-size: 75%; 183 | line-height: 0; 184 | position: relative; 185 | vertical-align: baseline; 186 | } 187 | 188 | sub { 189 | bottom: -0.25em; 190 | } 191 | 192 | sup { 193 | top: -0.5em; 194 | } 195 | 196 | /* Embedded content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Remove the border on images inside links in IE 10-. 201 | */ 202 | 203 | img { 204 | border-style: none; 205 | } 206 | 207 | /** 208 | * Hide the overflow in IE. 209 | */ 210 | 211 | svg:not(:root) { 212 | overflow: hidden; 213 | } 214 | 215 | /* Grouping content 216 | ========================================================================== */ 217 | 218 | /** 219 | * 1. Correct the inheritance and scaling of font size in all browsers. 220 | * 2. Correct the odd `em` font sizing in all browsers. 221 | */ 222 | 223 | code, 224 | kbd, 225 | pre, 226 | samp { 227 | font-family: monospace, monospace; /* 1 */ 228 | font-size: 1em; /* 2 */ 229 | } 230 | 231 | /** 232 | * Add the correct margin in IE 8. 233 | */ 234 | 235 | figure { 236 | margin: 1em 40px; 237 | } 238 | 239 | /** 240 | * 1. Add the correct box sizing in Firefox. 241 | * 2. Show the overflow in Edge and IE. 242 | */ 243 | 244 | hr { 245 | box-sizing: content-box; /* 1 */ 246 | height: 0; /* 1 */ 247 | overflow: visible; /* 2 */ 248 | } 249 | 250 | /* Forms 251 | ========================================================================== */ 252 | 253 | /** 254 | * 1. Change font properties to `inherit` in all browsers (opinionated). 255 | * 2. Remove the margin in Firefox and Safari. 256 | */ 257 | 258 | button, 259 | input, 260 | select, 261 | textarea { 262 | font: inherit; /* 1 */ 263 | margin: 0; /* 2 */ 264 | } 265 | 266 | /** 267 | * Restore the font weight unset by the previous rule. 268 | */ 269 | 270 | optgroup { 271 | font-weight: bold; 272 | } 273 | 274 | /** 275 | * Show the overflow in IE. 276 | * 1. Show the overflow in Edge. 277 | */ 278 | 279 | button, 280 | input { /* 1 */ 281 | overflow: visible; 282 | } 283 | 284 | /** 285 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 286 | * 1. Remove the inheritance of text transform in Firefox. 287 | */ 288 | 289 | button, 290 | select { /* 1 */ 291 | text-transform: none; 292 | } 293 | 294 | /** 295 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 296 | * controls in Android 4. 297 | * 2. Correct the inability to style clickable types in iOS and Safari. 298 | */ 299 | 300 | button, 301 | html [type="button"], /* 1 */ 302 | [type="reset"], 303 | [type="submit"] { 304 | -webkit-appearance: button; /* 2 */ 305 | } 306 | 307 | /** 308 | * Remove the inner border and padding in Firefox. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | [type="button"]::-moz-focus-inner, 313 | [type="reset"]::-moz-focus-inner, 314 | [type="submit"]::-moz-focus-inner { 315 | border-style: none; 316 | padding: 0; 317 | } 318 | 319 | /** 320 | * Restore the focus styles unset by the previous rule. 321 | */ 322 | 323 | button:-moz-focusring, 324 | [type="button"]:-moz-focusring, 325 | [type="reset"]:-moz-focusring, 326 | [type="submit"]:-moz-focusring { 327 | outline: 1px dotted ButtonText; 328 | } 329 | 330 | /** 331 | * Change the border, margin, and padding in all browsers (opinionated). 332 | */ 333 | 334 | fieldset { 335 | border: 1px solid #c0c0c0; 336 | margin: 0 2px; 337 | padding: 0.35em 0.625em 0.75em; 338 | } 339 | 340 | /** 341 | * 1. Correct the text wrapping in Edge and IE. 342 | * 2. Correct the color inheritance from `fieldset` elements in IE. 343 | * 3. Remove the padding so developers are not caught out when they zero out 344 | * `fieldset` elements in all browsers. 345 | */ 346 | 347 | legend { 348 | box-sizing: border-box; /* 1 */ 349 | color: inherit; /* 2 */ 350 | display: table; /* 1 */ 351 | max-width: 100%; /* 1 */ 352 | padding: 0; /* 3 */ 353 | white-space: normal; /* 1 */ 354 | } 355 | 356 | /** 357 | * Remove the default vertical scrollbar in IE. 358 | */ 359 | 360 | textarea { 361 | overflow: auto; 362 | } 363 | 364 | /** 365 | * 1. Add the correct box sizing in IE 10-. 366 | * 2. Remove the padding in IE 10-. 367 | */ 368 | 369 | [type="checkbox"], 370 | [type="radio"] { 371 | box-sizing: border-box; /* 1 */ 372 | padding: 0; /* 2 */ 373 | } 374 | 375 | /** 376 | * Correct the cursor style of increment and decrement buttons in Chrome. 377 | */ 378 | 379 | [type="number"]::-webkit-inner-spin-button, 380 | [type="number"]::-webkit-outer-spin-button { 381 | height: auto; 382 | } 383 | 384 | /** 385 | * 1. Correct the odd appearance in Chrome and Safari. 386 | * 2. Correct the outline style in Safari. 387 | */ 388 | 389 | [type="search"] { 390 | -webkit-appearance: textfield; /* 1 */ 391 | outline-offset: -2px; /* 2 */ 392 | } 393 | 394 | /** 395 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 396 | */ 397 | 398 | [type="search"]::-webkit-search-cancel-button, 399 | [type="search"]::-webkit-search-decoration { 400 | -webkit-appearance: none; 401 | } 402 | 403 | /** 404 | * Correct the text style of placeholders in Chrome, Edge, and Safari. 405 | */ 406 | 407 | ::-webkit-input-placeholder { 408 | color: inherit; 409 | opacity: 0.54; 410 | } 411 | 412 | /** 413 | * 1. Correct the inability to style clickable types in iOS and Safari. 414 | * 2. Change font properties to `inherit` in Safari. 415 | */ 416 | 417 | ::-webkit-file-upload-button { 418 | -webkit-appearance: button; /* 1 */ 419 | font: inherit; /* 2 */ 420 | } 421 | 422 | header { 423 | background: #EEE; 424 | padding: 20px; 425 | text-align: center; 426 | } 427 | 428 | h1 { 429 | margin: 0; 430 | } 431 | 432 | main { 433 | max-width: 1000px; 434 | margin: 0 auto; 435 | padding: 20px; 436 | } 437 | input[type='text'] { 438 | width: 45%; 439 | } 440 | button[type='submit'] { 441 | width: 100%; 442 | border: solid 1px #111; 443 | background: #FFF; 444 | margin-top: 10px; 445 | } 446 | 447 | .item { 448 | margin-top: 20px; 449 | background: #FFF; 450 | box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 451 | padding: 20px; 452 | display: flex; 453 | justify-content: space-between; 454 | } 455 | 456 | .item p { 457 | font-size: 18px; 458 | margin: 0; 459 | } 460 | 461 | .item div { 462 | width: 40%; 463 | cursor: pointer; 464 | padding: 5px; 465 | text-align: center; 466 | transition: 0.3s ease all; 467 | border-bottom: solid 10px; 468 | } 469 | .item .vote-one { 470 | border-bottom-color: blue; 471 | } 472 | 473 | .item .vote-two { 474 | border-bottom-color: red; 475 | } 476 | 477 | .item > span { 478 | font-style: italic; 479 | color: #CCC; 480 | } 481 | 482 | .item div:hover { 483 | background: #EEE; 484 | } 485 | -------------------------------------------------------------------------------- /end of #15/client/main.css: -------------------------------------------------------------------------------- 1 | /* CSS declarations go here */ 2 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ 3 | 4 | /** 5 | * 1. Change the default font family in all browsers (opinionated). 6 | * 2. Prevent adjustments of font size after orientation changes in IE and iOS. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove the margin in all browsers (opinionated). 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Add the correct display in IE 9-. 28 | * 1. Add the correct display in Edge, IE, and Firefox. 29 | * 2. Add the correct display in IE. 30 | */ 31 | 32 | article, 33 | aside, 34 | details, /* 1 */ 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | main, /* 2 */ 40 | menu, 41 | nav, 42 | section, 43 | summary { /* 1 */ 44 | display: block; 45 | } 46 | 47 | /** 48 | * Add the correct display in IE 9-. 49 | */ 50 | 51 | audio, 52 | canvas, 53 | progress, 54 | video { 55 | display: inline-block; 56 | } 57 | 58 | /** 59 | * Add the correct display in iOS 4-7. 60 | */ 61 | 62 | audio:not([controls]) { 63 | display: none; 64 | height: 0; 65 | } 66 | 67 | /** 68 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 69 | */ 70 | 71 | progress { 72 | vertical-align: baseline; 73 | } 74 | 75 | /** 76 | * Add the correct display in IE 10-. 77 | * 1. Add the correct display in IE. 78 | */ 79 | 80 | template, /* 1 */ 81 | [hidden] { 82 | display: none; 83 | } 84 | 85 | /* Links 86 | ========================================================================== */ 87 | 88 | /** 89 | * 1. Remove the gray background on active links in IE 10. 90 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 91 | */ 92 | 93 | a { 94 | background-color: transparent; /* 1 */ 95 | -webkit-text-decoration-skip: objects; /* 2 */ 96 | } 97 | 98 | /** 99 | * Remove the outline on focused links when they are also active or hovered 100 | * in all browsers (opinionated). 101 | */ 102 | 103 | a:active, 104 | a:hover { 105 | outline-width: 0; 106 | } 107 | 108 | /* Text-level semantics 109 | ========================================================================== */ 110 | 111 | /** 112 | * 1. Remove the bottom border in Firefox 39-. 113 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 114 | */ 115 | 116 | abbr[title] { 117 | border-bottom: none; /* 1 */ 118 | text-decoration: underline; /* 2 */ 119 | text-decoration: underline dotted; /* 2 */ 120 | } 121 | 122 | /** 123 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 124 | */ 125 | 126 | b, 127 | strong { 128 | font-weight: inherit; 129 | } 130 | 131 | /** 132 | * Add the correct font weight in Chrome, Edge, and Safari. 133 | */ 134 | 135 | b, 136 | strong { 137 | font-weight: bolder; 138 | } 139 | 140 | /** 141 | * Add the correct font style in Android 4.3-. 142 | */ 143 | 144 | dfn { 145 | font-style: italic; 146 | } 147 | 148 | /** 149 | * Correct the font size and margin on `h1` elements within `section` and 150 | * `article` contexts in Chrome, Firefox, and Safari. 151 | */ 152 | 153 | h1 { 154 | font-size: 2em; 155 | margin: 0.67em 0; 156 | } 157 | 158 | /** 159 | * Add the correct background and color in IE 9-. 160 | */ 161 | 162 | mark { 163 | background-color: #ff0; 164 | color: #000; 165 | } 166 | 167 | /** 168 | * Add the correct font size in all browsers. 169 | */ 170 | 171 | small { 172 | font-size: 80%; 173 | } 174 | 175 | /** 176 | * Prevent `sub` and `sup` elements from affecting the line height in 177 | * all browsers. 178 | */ 179 | 180 | sub, 181 | sup { 182 | font-size: 75%; 183 | line-height: 0; 184 | position: relative; 185 | vertical-align: baseline; 186 | } 187 | 188 | sub { 189 | bottom: -0.25em; 190 | } 191 | 192 | sup { 193 | top: -0.5em; 194 | } 195 | 196 | /* Embedded content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Remove the border on images inside links in IE 10-. 201 | */ 202 | 203 | img { 204 | border-style: none; 205 | } 206 | 207 | /** 208 | * Hide the overflow in IE. 209 | */ 210 | 211 | svg:not(:root) { 212 | overflow: hidden; 213 | } 214 | 215 | /* Grouping content 216 | ========================================================================== */ 217 | 218 | /** 219 | * 1. Correct the inheritance and scaling of font size in all browsers. 220 | * 2. Correct the odd `em` font sizing in all browsers. 221 | */ 222 | 223 | code, 224 | kbd, 225 | pre, 226 | samp { 227 | font-family: monospace, monospace; /* 1 */ 228 | font-size: 1em; /* 2 */ 229 | } 230 | 231 | /** 232 | * Add the correct margin in IE 8. 233 | */ 234 | 235 | figure { 236 | margin: 1em 40px; 237 | } 238 | 239 | /** 240 | * 1. Add the correct box sizing in Firefox. 241 | * 2. Show the overflow in Edge and IE. 242 | */ 243 | 244 | hr { 245 | box-sizing: content-box; /* 1 */ 246 | height: 0; /* 1 */ 247 | overflow: visible; /* 2 */ 248 | } 249 | 250 | /* Forms 251 | ========================================================================== */ 252 | 253 | /** 254 | * 1. Change font properties to `inherit` in all browsers (opinionated). 255 | * 2. Remove the margin in Firefox and Safari. 256 | */ 257 | 258 | button, 259 | input, 260 | select, 261 | textarea { 262 | font: inherit; /* 1 */ 263 | margin: 0; /* 2 */ 264 | } 265 | 266 | /** 267 | * Restore the font weight unset by the previous rule. 268 | */ 269 | 270 | optgroup { 271 | font-weight: bold; 272 | } 273 | 274 | /** 275 | * Show the overflow in IE. 276 | * 1. Show the overflow in Edge. 277 | */ 278 | 279 | button, 280 | input { /* 1 */ 281 | overflow: visible; 282 | } 283 | 284 | /** 285 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 286 | * 1. Remove the inheritance of text transform in Firefox. 287 | */ 288 | 289 | button, 290 | select { /* 1 */ 291 | text-transform: none; 292 | } 293 | 294 | /** 295 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 296 | * controls in Android 4. 297 | * 2. Correct the inability to style clickable types in iOS and Safari. 298 | */ 299 | 300 | button, 301 | html [type="button"], /* 1 */ 302 | [type="reset"], 303 | [type="submit"] { 304 | -webkit-appearance: button; /* 2 */ 305 | } 306 | 307 | /** 308 | * Remove the inner border and padding in Firefox. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | [type="button"]::-moz-focus-inner, 313 | [type="reset"]::-moz-focus-inner, 314 | [type="submit"]::-moz-focus-inner { 315 | border-style: none; 316 | padding: 0; 317 | } 318 | 319 | /** 320 | * Restore the focus styles unset by the previous rule. 321 | */ 322 | 323 | button:-moz-focusring, 324 | [type="button"]:-moz-focusring, 325 | [type="reset"]:-moz-focusring, 326 | [type="submit"]:-moz-focusring { 327 | outline: 1px dotted ButtonText; 328 | } 329 | 330 | /** 331 | * Change the border, margin, and padding in all browsers (opinionated). 332 | */ 333 | 334 | fieldset { 335 | border: 1px solid #c0c0c0; 336 | margin: 0 2px; 337 | padding: 0.35em 0.625em 0.75em; 338 | } 339 | 340 | /** 341 | * 1. Correct the text wrapping in Edge and IE. 342 | * 2. Correct the color inheritance from `fieldset` elements in IE. 343 | * 3. Remove the padding so developers are not caught out when they zero out 344 | * `fieldset` elements in all browsers. 345 | */ 346 | 347 | legend { 348 | box-sizing: border-box; /* 1 */ 349 | color: inherit; /* 2 */ 350 | display: table; /* 1 */ 351 | max-width: 100%; /* 1 */ 352 | padding: 0; /* 3 */ 353 | white-space: normal; /* 1 */ 354 | } 355 | 356 | /** 357 | * Remove the default vertical scrollbar in IE. 358 | */ 359 | 360 | textarea { 361 | overflow: auto; 362 | } 363 | 364 | /** 365 | * 1. Add the correct box sizing in IE 10-. 366 | * 2. Remove the padding in IE 10-. 367 | */ 368 | 369 | [type="checkbox"], 370 | [type="radio"] { 371 | box-sizing: border-box; /* 1 */ 372 | padding: 0; /* 2 */ 373 | } 374 | 375 | /** 376 | * Correct the cursor style of increment and decrement buttons in Chrome. 377 | */ 378 | 379 | [type="number"]::-webkit-inner-spin-button, 380 | [type="number"]::-webkit-outer-spin-button { 381 | height: auto; 382 | } 383 | 384 | /** 385 | * 1. Correct the odd appearance in Chrome and Safari. 386 | * 2. Correct the outline style in Safari. 387 | */ 388 | 389 | [type="search"] { 390 | -webkit-appearance: textfield; /* 1 */ 391 | outline-offset: -2px; /* 2 */ 392 | } 393 | 394 | /** 395 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 396 | */ 397 | 398 | [type="search"]::-webkit-search-cancel-button, 399 | [type="search"]::-webkit-search-decoration { 400 | -webkit-appearance: none; 401 | } 402 | 403 | /** 404 | * Correct the text style of placeholders in Chrome, Edge, and Safari. 405 | */ 406 | 407 | ::-webkit-input-placeholder { 408 | color: inherit; 409 | opacity: 0.54; 410 | } 411 | 412 | /** 413 | * 1. Correct the inability to style clickable types in iOS and Safari. 414 | * 2. Change font properties to `inherit` in Safari. 415 | */ 416 | 417 | ::-webkit-file-upload-button { 418 | -webkit-appearance: button; /* 1 */ 419 | font: inherit; /* 2 */ 420 | } 421 | 422 | header { 423 | background: #EEE; 424 | padding: 20px; 425 | text-align: center; 426 | } 427 | 428 | h1 { 429 | margin: 0; 430 | } 431 | 432 | main { 433 | max-width: 1000px; 434 | margin: 0 auto; 435 | padding: 20px; 436 | } 437 | input[type='text'] { 438 | width: 45%; 439 | } 440 | button[type='submit'] { 441 | width: 100%; 442 | border: solid 1px #111; 443 | background: #FFF; 444 | margin-top: 10px; 445 | } 446 | 447 | .item { 448 | margin-top: 20px; 449 | background: #FFF; 450 | box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 451 | padding: 20px; 452 | display: flex; 453 | justify-content: space-between; 454 | } 455 | 456 | .item p { 457 | font-size: 18px; 458 | margin: 0; 459 | } 460 | 461 | .item div { 462 | width: 40%; 463 | cursor: pointer; 464 | padding: 5px; 465 | text-align: center; 466 | transition: 0.3s ease all; 467 | border-bottom: solid 10px; 468 | } 469 | .item .vote-one { 470 | border-bottom-color: blue; 471 | } 472 | 473 | .item .vote-two { 474 | border-bottom-color: red; 475 | } 476 | 477 | .item > span { 478 | font-style: italic; 479 | color: #CCC; 480 | } 481 | 482 | .item div:hover { 483 | background: #EEE; 484 | } 485 | -------------------------------------------------------------------------------- /end of #2/client/main.css: -------------------------------------------------------------------------------- 1 | /* CSS declarations go here */ 2 | /*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */ 3 | 4 | /** 5 | * 1. Change the default font family in all browsers (opinionated). 6 | * 2. Prevent adjustments of font size after orientation changes in IE and iOS. 7 | */ 8 | 9 | html { 10 | font-family: sans-serif; /* 1 */ 11 | -ms-text-size-adjust: 100%; /* 2 */ 12 | -webkit-text-size-adjust: 100%; /* 2 */ 13 | } 14 | 15 | /** 16 | * Remove the margin in all browsers (opinionated). 17 | */ 18 | 19 | body { 20 | margin: 0; 21 | } 22 | 23 | /* HTML5 display definitions 24 | ========================================================================== */ 25 | 26 | /** 27 | * Add the correct display in IE 9-. 28 | * 1. Add the correct display in Edge, IE, and Firefox. 29 | * 2. Add the correct display in IE. 30 | */ 31 | 32 | article, 33 | aside, 34 | details, /* 1 */ 35 | figcaption, 36 | figure, 37 | footer, 38 | header, 39 | main, /* 2 */ 40 | menu, 41 | nav, 42 | section, 43 | summary { /* 1 */ 44 | display: block; 45 | } 46 | 47 | /** 48 | * Add the correct display in IE 9-. 49 | */ 50 | 51 | audio, 52 | canvas, 53 | progress, 54 | video { 55 | display: inline-block; 56 | } 57 | 58 | /** 59 | * Add the correct display in iOS 4-7. 60 | */ 61 | 62 | audio:not([controls]) { 63 | display: none; 64 | height: 0; 65 | } 66 | 67 | /** 68 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 69 | */ 70 | 71 | progress { 72 | vertical-align: baseline; 73 | } 74 | 75 | /** 76 | * Add the correct display in IE 10-. 77 | * 1. Add the correct display in IE. 78 | */ 79 | 80 | template, /* 1 */ 81 | [hidden] { 82 | display: none; 83 | } 84 | 85 | /* Links 86 | ========================================================================== */ 87 | 88 | /** 89 | * 1. Remove the gray background on active links in IE 10. 90 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. 91 | */ 92 | 93 | a { 94 | background-color: transparent; /* 1 */ 95 | -webkit-text-decoration-skip: objects; /* 2 */ 96 | } 97 | 98 | /** 99 | * Remove the outline on focused links when they are also active or hovered 100 | * in all browsers (opinionated). 101 | */ 102 | 103 | a:active, 104 | a:hover { 105 | outline-width: 0; 106 | } 107 | 108 | /* Text-level semantics 109 | ========================================================================== */ 110 | 111 | /** 112 | * 1. Remove the bottom border in Firefox 39-. 113 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 114 | */ 115 | 116 | abbr[title] { 117 | border-bottom: none; /* 1 */ 118 | text-decoration: underline; /* 2 */ 119 | text-decoration: underline dotted; /* 2 */ 120 | } 121 | 122 | /** 123 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6. 124 | */ 125 | 126 | b, 127 | strong { 128 | font-weight: inherit; 129 | } 130 | 131 | /** 132 | * Add the correct font weight in Chrome, Edge, and Safari. 133 | */ 134 | 135 | b, 136 | strong { 137 | font-weight: bolder; 138 | } 139 | 140 | /** 141 | * Add the correct font style in Android 4.3-. 142 | */ 143 | 144 | dfn { 145 | font-style: italic; 146 | } 147 | 148 | /** 149 | * Correct the font size and margin on `h1` elements within `section` and 150 | * `article` contexts in Chrome, Firefox, and Safari. 151 | */ 152 | 153 | h1 { 154 | font-size: 2em; 155 | margin: 0.67em 0; 156 | } 157 | 158 | /** 159 | * Add the correct background and color in IE 9-. 160 | */ 161 | 162 | mark { 163 | background-color: #ff0; 164 | color: #000; 165 | } 166 | 167 | /** 168 | * Add the correct font size in all browsers. 169 | */ 170 | 171 | small { 172 | font-size: 80%; 173 | } 174 | 175 | /** 176 | * Prevent `sub` and `sup` elements from affecting the line height in 177 | * all browsers. 178 | */ 179 | 180 | sub, 181 | sup { 182 | font-size: 75%; 183 | line-height: 0; 184 | position: relative; 185 | vertical-align: baseline; 186 | } 187 | 188 | sub { 189 | bottom: -0.25em; 190 | } 191 | 192 | sup { 193 | top: -0.5em; 194 | } 195 | 196 | /* Embedded content 197 | ========================================================================== */ 198 | 199 | /** 200 | * Remove the border on images inside links in IE 10-. 201 | */ 202 | 203 | img { 204 | border-style: none; 205 | } 206 | 207 | /** 208 | * Hide the overflow in IE. 209 | */ 210 | 211 | svg:not(:root) { 212 | overflow: hidden; 213 | } 214 | 215 | /* Grouping content 216 | ========================================================================== */ 217 | 218 | /** 219 | * 1. Correct the inheritance and scaling of font size in all browsers. 220 | * 2. Correct the odd `em` font sizing in all browsers. 221 | */ 222 | 223 | code, 224 | kbd, 225 | pre, 226 | samp { 227 | font-family: monospace, monospace; /* 1 */ 228 | font-size: 1em; /* 2 */ 229 | } 230 | 231 | /** 232 | * Add the correct margin in IE 8. 233 | */ 234 | 235 | figure { 236 | margin: 1em 40px; 237 | } 238 | 239 | /** 240 | * 1. Add the correct box sizing in Firefox. 241 | * 2. Show the overflow in Edge and IE. 242 | */ 243 | 244 | hr { 245 | box-sizing: content-box; /* 1 */ 246 | height: 0; /* 1 */ 247 | overflow: visible; /* 2 */ 248 | } 249 | 250 | /* Forms 251 | ========================================================================== */ 252 | 253 | /** 254 | * 1. Change font properties to `inherit` in all browsers (opinionated). 255 | * 2. Remove the margin in Firefox and Safari. 256 | */ 257 | 258 | button, 259 | input, 260 | select, 261 | textarea { 262 | font: inherit; /* 1 */ 263 | margin: 0; /* 2 */ 264 | } 265 | 266 | /** 267 | * Restore the font weight unset by the previous rule. 268 | */ 269 | 270 | optgroup { 271 | font-weight: bold; 272 | } 273 | 274 | /** 275 | * Show the overflow in IE. 276 | * 1. Show the overflow in Edge. 277 | */ 278 | 279 | button, 280 | input { /* 1 */ 281 | overflow: visible; 282 | } 283 | 284 | /** 285 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 286 | * 1. Remove the inheritance of text transform in Firefox. 287 | */ 288 | 289 | button, 290 | select { /* 1 */ 291 | text-transform: none; 292 | } 293 | 294 | /** 295 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` 296 | * controls in Android 4. 297 | * 2. Correct the inability to style clickable types in iOS and Safari. 298 | */ 299 | 300 | button, 301 | html [type="button"], /* 1 */ 302 | [type="reset"], 303 | [type="submit"] { 304 | -webkit-appearance: button; /* 2 */ 305 | } 306 | 307 | /** 308 | * Remove the inner border and padding in Firefox. 309 | */ 310 | 311 | button::-moz-focus-inner, 312 | [type="button"]::-moz-focus-inner, 313 | [type="reset"]::-moz-focus-inner, 314 | [type="submit"]::-moz-focus-inner { 315 | border-style: none; 316 | padding: 0; 317 | } 318 | 319 | /** 320 | * Restore the focus styles unset by the previous rule. 321 | */ 322 | 323 | button:-moz-focusring, 324 | [type="button"]:-moz-focusring, 325 | [type="reset"]:-moz-focusring, 326 | [type="submit"]:-moz-focusring { 327 | outline: 1px dotted ButtonText; 328 | } 329 | 330 | /** 331 | * Change the border, margin, and padding in all browsers (opinionated). 332 | */ 333 | 334 | fieldset { 335 | border: 1px solid #c0c0c0; 336 | margin: 0 2px; 337 | padding: 0.35em 0.625em 0.75em; 338 | } 339 | 340 | /** 341 | * 1. Correct the text wrapping in Edge and IE. 342 | * 2. Correct the color inheritance from `fieldset` elements in IE. 343 | * 3. Remove the padding so developers are not caught out when they zero out 344 | * `fieldset` elements in all browsers. 345 | */ 346 | 347 | legend { 348 | box-sizing: border-box; /* 1 */ 349 | color: inherit; /* 2 */ 350 | display: table; /* 1 */ 351 | max-width: 100%; /* 1 */ 352 | padding: 0; /* 3 */ 353 | white-space: normal; /* 1 */ 354 | } 355 | 356 | /** 357 | * Remove the default vertical scrollbar in IE. 358 | */ 359 | 360 | textarea { 361 | overflow: auto; 362 | } 363 | 364 | /** 365 | * 1. Add the correct box sizing in IE 10-. 366 | * 2. Remove the padding in IE 10-. 367 | */ 368 | 369 | [type="checkbox"], 370 | [type="radio"] { 371 | box-sizing: border-box; /* 1 */ 372 | padding: 0; /* 2 */ 373 | } 374 | 375 | /** 376 | * Correct the cursor style of increment and decrement buttons in Chrome. 377 | */ 378 | 379 | [type="number"]::-webkit-inner-spin-button, 380 | [type="number"]::-webkit-outer-spin-button { 381 | height: auto; 382 | } 383 | 384 | /** 385 | * 1. Correct the odd appearance in Chrome and Safari. 386 | * 2. Correct the outline style in Safari. 387 | */ 388 | 389 | [type="search"] { 390 | -webkit-appearance: textfield; /* 1 */ 391 | outline-offset: -2px; /* 2 */ 392 | } 393 | 394 | /** 395 | * Remove the inner padding and cancel buttons in Chrome and Safari on OS X. 396 | */ 397 | 398 | [type="search"]::-webkit-search-cancel-button, 399 | [type="search"]::-webkit-search-decoration { 400 | -webkit-appearance: none; 401 | } 402 | 403 | /** 404 | * Correct the text style of placeholders in Chrome, Edge, and Safari. 405 | */ 406 | 407 | ::-webkit-input-placeholder { 408 | color: inherit; 409 | opacity: 0.54; 410 | } 411 | 412 | /** 413 | * 1. Correct the inability to style clickable types in iOS and Safari. 414 | * 2. Change font properties to `inherit` in Safari. 415 | */ 416 | 417 | ::-webkit-file-upload-button { 418 | -webkit-appearance: button; /* 1 */ 419 | font: inherit; /* 2 */ 420 | } 421 | 422 | header { 423 | background: #EEE; 424 | padding: 20px; 425 | text-align: center; 426 | } 427 | 428 | h1 { 429 | margin: 0; 430 | } 431 | 432 | main { 433 | max-width: 1000px; 434 | margin: 0 auto; 435 | padding: 20px; 436 | } 437 | input[type='text'] { 438 | width: 45%; 439 | } 440 | button[type='submit'] { 441 | width: 100%; 442 | border: solid 1px #111; 443 | background: #FFF; 444 | margin-top: 10px; 445 | } 446 | 447 | .item { 448 | margin-top: 20px; 449 | background: #FFF; 450 | box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); 451 | padding: 20px; 452 | display: flex; 453 | justify-content: space-between; 454 | } 455 | 456 | .item p { 457 | font-size: 18px; 458 | margin: 0; 459 | } 460 | 461 | .item div { 462 | width: 40%; 463 | cursor: pointer; 464 | padding: 5px; 465 | text-align: center; 466 | transition: 0.3s ease all; 467 | border-bottom: solid 10px; 468 | } 469 | .item .vote-one { 470 | border-bottom-color: blue; 471 | } 472 | 473 | .item .vote-two { 474 | border-bottom-color: red; 475 | } 476 | 477 | .item > span { 478 | font-style: italic; 479 | color: #CCC; 480 | } 481 | 482 | .item div:hover { 483 | background: #EEE; 484 | } 485 | --------------------------------------------------------------------------------