From 978e644a0847b9084b1e703849e921f200343691 Mon Sep 17 00:00:00 2001 From: gluxon Date: Mon, 6 Apr 2015 11:19:21 -0400 Subject: [PATCH] Use arrow functions and let (part of issue #17) --- .jshintrc | 3 ++ app/controllers/admin.js | 44 ++++++++++++++--------------- app/controllers/clock.js | 22 +++++++-------- app/controllers/marquee.js | 28 +++++++++---------- app/controllers/notices.js | 28 +++++++++---------- app/controllers/schedules.js | 54 ++++++++++++++++++------------------ app/controllers/themes.js | 32 ++++++++++----------- app/controllers/wallpaper.js | 16 +++++------ app/models/marquee.js | 4 +-- app/models/notice.js | 4 +-- app/models/period.js | 38 ++++++++++++------------- app/models/schedule.js | 14 ++++------ app/models/theme.js | 36 +++++++++++------------- app/models/user.js | 14 ++++------ clock.js | 44 ++++++++++++++--------------- index.js | 1 + package.json | 3 +- 17 files changed, 190 insertions(+), 195 deletions(-) diff --git a/.jshintrc b/.jshintrc index 8ba438a..fe944e4 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,4 +1,7 @@ { + // Relaxing + "esnext": true, + // Environments "node": true } diff --git a/app/controllers/admin.js b/app/controllers/admin.js index 4e40c09..f58a695 100644 --- a/app/controllers/admin.js +++ b/app/controllers/admin.js @@ -1,19 +1,19 @@ -var mongoose = require('mongoose'); -var express = require('express'); -var Theme = mongoose.model('Theme') +let mongoose = require('mongoose'); +let express = require('express'); +let Theme = mongoose.model('Theme') , Schedule = mongoose.model('Schedule') , Marquee = mongoose.model('Marquee') , Notice = mongoose.model('Notice') , User = mongoose.model('User'); -var router = express.Router(); +let router = express.Router(); -router.get(/.*/, function(req, res, next) { +router.get(/.*/, (req, res, next) => { // Generate data for views res.locals.authenticated = req.session.authenticated; - res.locals.appVersion = require(__dirname + '/../../package.json').version; + res.locals.appVersion = require(`${__dirname}/../../package.json`).version; - User.getActive(function(err, user) { + User.getActive((err, user) => { // Check if we need to do one-time setup if (!user && req.url != '/setup') { req.flash('warning', 'Y\'all need to give me your password first.'); @@ -26,26 +26,26 @@ router.get(/.*/, function(req, res, next) { }); }); -router.get('/', function(req, res) { +router.get('/', (req, res) => { res.render('admin/welcome'); }); -router.get('/setup', function(req, res) { - User.getActive(function(err, user) { +router.get('/setup', (req, res) => { + User.getActive((err, user) => { if (user) { res.status(403); - res.render(__dirname + '/../views/403'); + res.render(`${__dirname}/../views/403`); return; } res.render('admin/setup'); }); }); -router.post('/setup', function(req, res) { - User.getActive(function(err, user) { +router.post('/setup', (req, res) => { + User.getActive((err, user) => { if (user) { res.status(403); - res.render(__dirname + '/../views/403'); + res.render(`${__dirname}/../views/403`); return; } User.create({ @@ -61,8 +61,8 @@ router.post('/setup', function(req, res) { } }); -router.post('/login', function(req, res) { - User.getActive(function(err, user) { +router.post('/login', (req, res) => { + User.getActive((err, user) => { user.checkPassword(req.body.password, checkPassword); }); @@ -77,21 +77,21 @@ router.post('/login', function(req, res) { } }); -router.get('/logout', function(req, res) { +router.get('/logout', (req, res) => { req.session.authenticated = false; req.flash('success', 'Bye bye!'); res.redirect('/admin'); }); -router.get('/refresh', function(req, res) { +router.get('/refresh', (req, res) => { req.app.locals.io.emit('refresh'); res.redirect(req.header('Referer') || '/admin'); }); -var themesRoute = require(__dirname + '/themes'); -var schedulesRoute = require(__dirname + '/schedules'); -var marqueeRoute = require(__dirname + '/marquee'); -var noticesRoute = require(__dirname + '/notices'); +let themesRoute = require(`${__dirname}/themes`); +let schedulesRoute = require(`${__dirname}/schedules`); +let marqueeRoute = require(`${__dirname}/marquee`); +let noticesRoute = require(`${__dirname}/notices`); router.use('/themes', themesRoute); router.use('/schedules', schedulesRoute); diff --git a/app/controllers/clock.js b/app/controllers/clock.js index ed80d07..13dd852 100644 --- a/app/controllers/clock.js +++ b/app/controllers/clock.js @@ -1,26 +1,24 @@ -var express = require('express'); -var moment = require('moment'); -var async = require('async'); -var mongoose = require('mongoose'); -var Schedule = mongoose.model('Schedule') +let express = require('express'); +let moment = require('moment'); +let async = require('async'); +let mongoose = require('mongoose'); +let Schedule = mongoose.model('Schedule') , Marquee = mongoose.model('Marquee') , Notice = mongoose.model('Notice'); -var router = express.Router(); - -router.get('/', function(req, res) { - var self = this; +let router = express.Router(); +router.get('/', (req, res) => { async.parallel({ - 'schedule': function(callback) { + 'schedule': (callback) => { Schedule.getActive(callback); }, - 'marquees': function(callback){ + 'marquees': (callback) => { Marquee.getAll(callback); }, - 'notices': function(callback) { + 'notices': (callback) => { Notice.getAll(callback); } }, diff --git a/app/controllers/marquee.js b/app/controllers/marquee.js index b207256..302e717 100644 --- a/app/controllers/marquee.js +++ b/app/controllers/marquee.js @@ -1,25 +1,25 @@ -var express = require('express'); -var mongoose = require('mongoose'); -var Marquee = mongoose.model('Marquee'); +let express = require('express'); +let mongoose = require('mongoose'); +let Marquee = mongoose.model('Marquee'); -var router = express.Router(); +let router = express.Router(); -router.get('/', function(req, res) { - Marquee.getAll(function(err, marquees) { +router.get('/', (req, res) => { + Marquee.getAll((err, marquees) => { res.locals.marquees = marquees; res.render('admin/marquee/index'); }); }); -router.param('marquee', function(req, res, next, id) { - Marquee.findById(id, function (err, marquee) { +router.param('marquee', (req, res, next, id) => { + Marquee.findById(id, (err, marquee) => { if (err) return next(err); req.marquee = marquee; next(); }); }); -router.post('/create', function(req, res) { +router.post('/create', (req, res) => { Marquee.create({ 'text': req.body.marquee.text }, redirectToLanding); @@ -31,23 +31,23 @@ router.post('/create', function(req, res) { } }); -router.get('/:marquee/delete', function(req, res) { - req.marquee.remove(function (err) { +router.get('/:marquee/delete', (req, res) => { + req.marquee.remove((err) => { if (err) throw err; req.flash('success', 'The marquee has been destroyed.'); res.redirect('/admin/marquee'); }); }); -router.get('/:marquee/edit', function(req, res) { +router.get('/:marquee/edit', (req, res) => { res.locals.marquee = req.marquee; res.render('admin/marquee/edit'); }); -router.post('/:marquee/edit', function(req, res) { +router.post('/:marquee/edit', (req, res) => { req.marquee.text = req.body.marquee.text; - req.marquee.save(function(err) { + req.marquee.save((err) => { if (err) throw err; req.flash('success', 'The marquee has been modified.'); res.redirect('/admin/marquee'); diff --git a/app/controllers/notices.js b/app/controllers/notices.js index c27f628..ae6ec53 100644 --- a/app/controllers/notices.js +++ b/app/controllers/notices.js @@ -1,25 +1,25 @@ -var express = require('express'); -var mongoose = require('mongoose'); -var Notice = mongoose.model('Notice'); +let express = require('express'); +let mongoose = require('mongoose'); +let Notice = mongoose.model('Notice'); -var router = express.Router(); +let router = express.Router(); -router.get('/', function(req, res) { - Notice.getAll(function(err, notices) { +router.get('/', (req, res) => { + Notice.getAll((err, notices) => { res.locals.notices = notices; res.render('admin/notices/index'); }); }); -router.param('notice', function(req, res, next, id) { - Notice.findById(id, function (err, notice) { +router.param('notice', (req, res, next, id) => { + Notice.findById(id, (err, notice) => { if (err) return next(err); req.notice = notice; next(); }); }); -router.post('/create', function(req, res) { +router.post('/create', (req, res) => { Notice.create({ 'text': req.body.notice.text }, redirectToLanding); @@ -31,23 +31,23 @@ router.post('/create', function(req, res) { } }); -router.get('/:notice/delete', function(req, res) { - req.notice.remove(function (err) { +router.get('/:notice/delete', (req, res) => { + req.notice.remove((err) => { if (err) throw err; req.flash('success', 'The notice has been destroyed.'); res.redirect('/admin/notices'); }); }); -router.get('/:notice/edit', function(req, res) { +router.get('/:notice/edit', (req, res) => { res.locals.notice = req.notice; res.render('admin/notices/edit'); }); -router.post('/:notice/edit', function(req, res) { +router.post('/:notice/edit', (req, res) => { req.notice.text = req.body.notice.text; - req.notice.save(function(err) { + req.notice.save((err) => { if (err) throw err; req.flash('success', 'The notice has been modified.'); res.redirect('/admin/notices'); diff --git a/app/controllers/schedules.js b/app/controllers/schedules.js index a934805..5ce6951 100644 --- a/app/controllers/schedules.js +++ b/app/controllers/schedules.js @@ -1,26 +1,26 @@ -var express = require('express'); -var mongoose = require('mongoose'); -var Schedule = mongoose.model('Schedule') +let express = require('express'); +let mongoose = require('mongoose'); +let Schedule = mongoose.model('Schedule') , Period = mongoose.model('Period'); -var router = express.Router(); +let router = express.Router(); -router.get('/', function(req, res) { - Schedule.getAll(function(err, schedules) { +router.get('/', (req, res) => { + Schedule.getAll((err, schedules) => { res.locals.schedules = schedules; res.render('admin/schedules/index'); }); }); -router.param('schedule', function(req, res, next, id) { - Schedule.findById(id, function (err, schedule) { +router.param('schedule', (req, res, next, id) => { + Schedule.findById(id, (err, schedule) => { if (err) return next(err); req.schedule = schedule; next(); }); }); -router.post('/create', function(req, res) { +router.post('/create', (req, res) => { Schedule.create({ 'name': req.body.schedule.name, 'description': req.body.schedule.description @@ -33,53 +33,53 @@ router.post('/create', function(req, res) { } }); -router.get('/:schedule/activate', function(req, res) { - req.schedule.activate(function(err) { +router.get('/:schedule/activate', (req, res) => { + req.schedule.activate((err) => { if (err) throw err; req.flash('success', 'The schedule has been activated.'); res.redirect('/admin/schedules'); }); }); -router.get('/:schedule/deactivate', function(req, res) { - req.schedule.deactivate(function(err) { +router.get('/:schedule/deactivate', (req, res) => { + req.schedule.deactivate((err) => { if (err) throw err; req.flash('success', 'The schedule has been deactivated.'); res.redirect('/admin/schedules'); }); }); -router.get('/:schedule/delete', function(req, res) { - req.schedule.remove(function (err) { +router.get('/:schedule/delete', (req, res) => { + req.schedule.remove( (err) => { if (err) throw err; req.flash('success', 'The schedule has been destroyed.'); res.redirect('/admin/schedules'); }); }); -router.get('/:schedule/edit', function(req, res) { +router.get('/:schedule/edit', (req, res) => { res.locals.schedule = req.schedule; res.locals.periods = req.schedule.periods; res.render('admin/schedules/edit'); }); -router.post('/:schedule/edit', function(req, res) { +router.post('/:schedule/edit', (req, res) => { req.schedule.name = req.body.schedule.name; req.schedule.description = req.body.schedule.description; - req.schedule.save(function(err) { + req.schedule.save((err) => { if (err) throw err; req.flash('success', 'The schedule has been modified.'); res.redirect('/admin/schedules/' + req.params.schedule + '/edit'); }); }); -router.param('period', function(req, res, next, id) { +router.param('period', (req, res, next, id) => { req.period = req.schedule.periods.id(id); next(); }); -router.post('/:schedule/periods/create', function(req, res) { +router.post('/:schedule/periods/create', (req, res) => { req.schedule.periods.push({ 'number': req.body.period.number, 'text': req.body.period.text, @@ -87,30 +87,30 @@ router.post('/:schedule/periods/create', function(req, res) { 'finish': Period.parseTime(req.body.period.finish) }); - req.schedule.save(function (err) { + req.schedule.save((err) => { if (err) throw err; req.flash('success', 'The period has been created.'); res.redirect('/admin/schedules/' + req.params.schedule + '/edit'); }); }); -router.get('/:schedule/periods/:period/delete', function(req, res) { +router.get('/:schedule/periods/:period/delete', (req, res) => { req.schedule.periods.id(req.period.id).remove(); - req.schedule.save(function(err) { + req.schedule.save((err) => { if (err) throw err; req.flash('success', 'The period has been destroyed.'); res.redirect('/admin/schedules/' + req.params.schedule + '/edit'); }); }); -router.get('/:schedule/periods/:period/edit', function(req, res) { +router.get('/:schedule/periods/:period/edit', (req, res) => { res.locals.schedule = req.schedule; res.locals.period = req.period; res.render('admin/schedules/edit_period'); }); -router.post('/:schedule/periods/:period/edit', function(req, res) { - var index = req.schedule.periods.indexOf(req.period); +router.post('/:schedule/periods/:period/edit', (req, res) => { + let index = req.schedule.periods.indexOf(req.period); req.schedule.periods[index].number = req.body.period.number; req.schedule.periods[index].text = req.body.period.text; @@ -119,7 +119,7 @@ router.post('/:schedule/periods/:period/edit', function(req, res) { // Sorting of periods may have to be done here in the future. - req.schedule.save(function(err) { + req.schedule.save((err) => { if (err) throw err; req.flash('success', 'The schedule has been modified.'); res.redirect('/admin/schedules/' + req.params.schedule + '/edit'); diff --git a/app/controllers/themes.js b/app/controllers/themes.js index a9dc8c2..13d3490 100644 --- a/app/controllers/themes.js +++ b/app/controllers/themes.js @@ -1,26 +1,26 @@ -var express = require('express'); -var mongoose = require('mongoose'); -var Theme = mongoose.model('Theme'); +let express = require('express'); +let mongoose = require('mongoose'); +let Theme = mongoose.model('Theme'); -var router = express.Router(); +let router = express.Router(); -router.get('/', function(req, res) { - Theme.getAll(function(err, themes) { +router.get('/', (req, res) => { + Theme.getAll((err, themes) => { res.locals.themes = themes; res.render('admin/themes/index'); }); }); -router.param('theme', function(req, res, next, id) { - Theme.findById(id, function (err, theme) { +router.param('theme', (req, res, next, id) => { + Theme.findById(id, (err, theme) => { if (err) return next(err); req.theme = theme; next(); }); }); -router.post('/create', function(req, res) { - Theme.uploadWallpaper(req.files['theme[wallpaper]'], function(err) { +router.post('/create', (req, res) => { + Theme.uploadWallpaper(req.files['theme[wallpaper]'], (err) => { if (err) throw err; Theme.create({ @@ -36,26 +36,26 @@ router.post('/create', function(req, res) { }); }); -router.get('/:theme/activate', function(req, res) { - req.theme.activate(function(err) { +router.get('/:theme/activate', (req, res) => { + req.theme.activate((err) => { if (err) throw err; req.flash('success', 'The theme has been activated.'); res.redirect('/admin/themes'); }); }); -router.get('/:theme/delete', function(req, res) { - req.theme.remove(function (err) { +router.get('/:theme/delete', (req, res) => { + req.theme.remove((err) => { if (err) throw err; req.flash('success', 'The theme has been destroyed.'); res.redirect('/admin/themes'); }); }); -router.get('/:theme/preview', function(req, res) { +router.get('/:theme/preview', (req, res) => { res.locals.theme = req.theme; - req.theme.getWallpaperID(function(err, wallpaperID) { + req.theme.getWallpaperID((err, wallpaperID) => { res.locals.wallpaperID = wallpaperID; res.render('admin/themes/preview'); }); diff --git a/app/controllers/wallpaper.js b/app/controllers/wallpaper.js index 09ddc2f..6c202ee 100644 --- a/app/controllers/wallpaper.js +++ b/app/controllers/wallpaper.js @@ -1,10 +1,10 @@ -var express = require('express'); -var mongoose = require('mongoose'); -var Theme = mongoose.model('Theme'); +let express = require('express'); +let mongoose = require('mongoose'); +let Theme = mongoose.model('Theme'); -var router = express.Router(); +let router = express.Router(); -router.get('/active', function(req, res) { +router.get('/active', (req, res) => { Theme.getWallpaperStreamOfActive(function(err, wallpaperStream) { if (err && err.message == 'No active theme') { res.status(404); @@ -15,15 +15,15 @@ router.get('/active', function(req, res) { }); }); -router.param('wallpaper', function(req, res, next, id) { - Theme.createWallpaperStream(id, function(err, wallpaperStream) { +router.param('wallpaper', (req, res, next, id) => { + Theme.createWallpaperStream(id, (err, wallpaperStream) => { if (err) return next(err); req.wallpaperStream = wallpaperStream; next(); }); }); -router.get('/:wallpaper', function(req, res) { +router.get('/:wallpaper', (req, res) => { req.wallpaperStream.pipe(res); }); diff --git a/app/models/marquee.js b/app/models/marquee.js index 4a297e1..5ba2b75 100644 --- a/app/models/marquee.js +++ b/app/models/marquee.js @@ -1,7 +1,7 @@ -var mongoose = require('mongoose') +let mongoose = require('mongoose') , Schema = mongoose.Schema; -var marqueeSchema = new Schema({ +let marqueeSchema = new Schema({ 'text': String, 'created_at': { type: Date, default: Date.now }, 'updated_at': { type: Date, default: Date.now } diff --git a/app/models/notice.js b/app/models/notice.js index cc78a27..b9815f4 100644 --- a/app/models/notice.js +++ b/app/models/notice.js @@ -1,7 +1,7 @@ -var mongoose = require('mongoose') +let mongoose = require('mongoose') , Schema = mongoose.Schema; -var noticeSchema = new Schema({ +let noticeSchema = new Schema({ 'text': String, 'created_at': { type: Date, default: Date.now }, 'updated_at': { type: Date, default: Date.now } diff --git a/app/models/period.js b/app/models/period.js index aa82ac8..ce7bd13 100644 --- a/app/models/period.js +++ b/app/models/period.js @@ -1,9 +1,9 @@ -var mongoose = require('mongoose') +let mongoose = require('mongoose') , Schema = mongoose.Schema , ObjectId = Schema.ObjectId; -var moment = require('moment'); +let moment = require('moment'); -var periodSchema = new Schema({ +let periodSchema = new Schema({ 'number': Number, 'text': String, 'start': Date, @@ -13,16 +13,16 @@ var periodSchema = new Schema({ // Static methods periodSchema.statics.normalize = function(isoTime) { - var timezone = isoTime.getTimezoneOffset() / 60; - var hour = moment(isoTime).hour(); - var time = moment(isoTime).hour(hour + timezone); + let timezone = isoTime.getTimezoneOffset() / 60; + let hour = moment(isoTime).hour(); + let time = moment(isoTime).hour(hour + timezone); return moment(time).format("h:mm"); }; periodSchema.statics.normalize24 = function(isoTime) { - var timezone = isoTime.getTimezoneOffset() / 60; - var hour = moment(isoTime).hour(); - var time = moment(isoTime).hour(hour + timezone); + let timezone = isoTime.getTimezoneOffset() / 60; + let hour = moment(isoTime).hour(); + let time = moment(isoTime).hour(hour + timezone); return moment(time).format("HH:mm"); }; @@ -30,15 +30,15 @@ periodSchema.statics.normalize24 = function(isoTime) { * RFC 3339 partial-time */ periodSchema.statics.normalizeForDatetime = function(isoTime) { - var timezone = isoTime.getTimezoneOffset() / 60; - var hour = moment(isoTime).hour(); - var time = moment(isoTime).hour(hour + timezone); + let timezone = isoTime.getTimezoneOffset() / 60; + let hour = moment(isoTime).hour(); + let time = moment(isoTime).hour(hour + timezone); return moment(time).format("HH:mm:ss"); }; /** Parse time in hh:mm format to Date() */ periodSchema.statics.parseTime = function(time) { - var timezone = new Date().getTimezoneOffset() / 60; + let timezone = new Date().getTimezoneOffset() / 60; time = moment(time, "HH:mm").toDate(); time.setHours(time.getHours() - timezone); return time; @@ -46,27 +46,27 @@ periodSchema.statics.parseTime = function(time) { // Virtual properties -periodSchema.virtual('normalized.start').get(function () { +periodSchema.virtual('normalized.start').get(function() { return periodSchema.statics.normalize(this.start); }); -periodSchema.virtual('normalized.finish').get(function () { +periodSchema.virtual('normalized.finish').get(function() { return periodSchema.statics.normalize(this.finish); }); -periodSchema.virtual('normalized.military.start').get(function () { +periodSchema.virtual('normalized.military.start').get(function() { return periodSchema.statics.normalize24(this.start); }); -periodSchema.virtual('normalized.military.finish').get(function () { +periodSchema.virtual('normalized.military.finish').get(function() { return periodSchema.statics.normalize24(this.finish); }); -periodSchema.virtual('datetime.start').get(function () { +periodSchema.virtual('datetime.start').get(function() { return periodSchema.statics.normalizeForDatetime(this.start); }); -periodSchema.virtual('datetime.finish').get(function () { +periodSchema.virtual('datetime.finish').get(function() { return periodSchema.statics.normalizeForDatetime(this.finish); }); diff --git a/app/models/schedule.js b/app/models/schedule.js index 51f8f1f..3b99b71 100644 --- a/app/models/schedule.js +++ b/app/models/schedule.js @@ -1,8 +1,8 @@ -var mongoose = require('mongoose') +let mongoose = require('mongoose') , Schema = mongoose.Schema; -var Period = mongoose.model('Period'); +let Period = mongoose.model('Period'); -var scheduleSchema = new Schema({ +let scheduleSchema = new Schema({ 'active': { type: Boolean, default: false }, 'name': String, 'description': String, @@ -24,12 +24,10 @@ scheduleSchema.statics.getActive = function(callback) { // Instance methods scheduleSchema.methods.activate = function(callback) { - var self = this; - - this.model('Schedule').update({active: true}, { $set: {active: false} }, {multi: true}, function(err) { + this.model('Schedule').update({active: true}, { $set: {active: false} }, {multi: true}, (err) => { if (err) callback(err); - self.active = true; - self.save(callback); + this.active = true; + this.save(callback); }); }; diff --git a/app/models/theme.js b/app/models/theme.js index 559e5f8..b6c0ca1 100644 --- a/app/models/theme.js +++ b/app/models/theme.js @@ -1,9 +1,9 @@ -var fs = require('fs'); -var mongoose = require('mongoose') +let fs = require('fs'); +let mongoose = require('mongoose') , Schema = require('mongoose').Schema; -var Grid = require('gridfs-stream'); +let Grid = require('gridfs-stream'); -var themeSchema = new Schema({ +let themeSchema = new Schema({ 'active': { type: Boolean, default: false }, 'name': String, 'wallpaper': String, @@ -22,16 +22,16 @@ themeSchema.statics.getActive = function(callback) { }; themeSchema.statics.uploadWallpaper = function(wallpaper, callback) { - var gfs = Grid(mongoose.connection.db); + let gfs = Grid(mongoose.connection.db); - var writestream = gfs.createWriteStream({ + let writestream = gfs.createWriteStream({ filename: 'uploads/' + wallpaper.name, mode: 'w', content_type: wallpaper.type }); fs.createReadStream(wallpaper.path).pipe(writestream); - writestream.on('close', function(file) { + writestream.on('close', (file) => { callback(null); }); }; @@ -48,8 +48,8 @@ themeSchema.statics.getWallpaperStreamOfActive = function(callback) { }; themeSchema.statics.createWallpaperStream = function(wallpaperID, callback) { - var gfs = Grid(mongoose.connection.db); - var readStream = gfs.createReadStream({ + let gfs = Grid(mongoose.connection.db); + let readStream = gfs.createReadStream({ _id: wallpaperID }); callback(null, readStream); @@ -58,12 +58,10 @@ themeSchema.statics.createWallpaperStream = function(wallpaperID, callback) { // Instance methods themeSchema.methods.activate = function(callback) { - var self = this; - - this.model('Theme').update({active: true}, { $set: {active: false} }, {multi: true}, function(err) { + this.model('Theme').update({active: true}, { $set: {active: false} }, {multi: true}, (err) => { if (err) callback(err); - self.active = true; - self.save(callback); + this.active = true; + this.save(callback); }); }; @@ -71,11 +69,9 @@ themeSchema.methods.activate = function(callback) { * Create a wallpaper stream from the theme */ themeSchema.methods.createWallpaperStream = function(callback) { - var self = this; - - this.getWallpaperID(function(err, wallpaperID) { + this.getWallpaperID((err, wallpaperID) => { if (err) throw err; - self.model('Theme').createWallpaperStream(wallpaperID, callback); + this.model('Theme').createWallpaperStream(wallpaperID, callback); }); }; @@ -84,8 +80,8 @@ themeSchema.methods.createWallpaperStream = function(callback) { * ID. */ themeSchema.methods.getWallpaperID = function(callback) { - var gfs = Grid(mongoose.connection.db); - gfs.files.findOne({filename: 'uploads/' + this.wallpaper}, function(err, wallpaper) { + let gfs = Grid(mongoose.connection.db); + gfs.files.findOne({filename: 'uploads/' + this.wallpaper}, (err, wallpaper) => { callback(err, wallpaper._id); }); }; diff --git a/app/models/user.js b/app/models/user.js index 6270d4b..4ed59c5 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -1,8 +1,8 @@ -var crypto = require('crypto'); -var mongoose = require('mongoose') +let crypto = require('crypto'); +let mongoose = require('mongoose') , Schema = require('mongoose').Schema; -var userSchema = new Schema({ +let userSchema = new Schema({ 'active': { type: Boolean, default: false }, 'name': String, 'password': String, @@ -23,12 +23,10 @@ userSchema.statics.provideHash = function(password) { // Instance methods userSchema.methods.activate = function(callback) { - var self = this; - - this.model('User').update({active: true}, { $set: {active: false} }, {multi: true}, function(err) { + this.model('User').update({active: true}, { $set: {active: false} }, {multi: true}, (err) => { if (err) callback(err); - self.active = true; - self.save(callback); + this.active = true; + this.save(callback); }); }; diff --git a/clock.js b/clock.js index 7651ad7..ca958d6 100644 --- a/clock.js +++ b/clock.js @@ -1,13 +1,13 @@ -var fs = require('fs') // Node.js core +let fs = require('fs') // Node.js core , path = require('path'); -var express = require('express') // Express +let express = require('express') // Express , app = express(); -var server = require('http').Server(app) // Socket.IO +let server = require('http').Server(app) // Socket.IO , io = require('socket.io')(server); -var bodyParser = require('body-parser') // Express middleware +let bodyParser = require('body-parser') // Express middleware , cookieParser = require('cookie-parser') , multer = require('multer') , session = require('express-session') @@ -15,28 +15,28 @@ var bodyParser = require('body-parser') // Express middleware , flash = require('flash') , morgan = require('morgan'); -var mongoose = require('mongoose') // Datastores +let mongoose = require('mongoose') // Datastores , Grid = require('gridfs-stream'); Grid.mongo = mongoose.mongo; // Connect GFS and MongoDB -var uuid = require('node-uuid'); // Miscellaneous utilities +let uuid = require('node-uuid'); // Miscellaneous utilities // Grab settings -var datastore = require(__dirname + '/config/datastore.json'); -var mongodb_uri = datastore.mongodb_uri || process.env.MONGODB_URI || 'localhost'; +let datastore = require(`${__dirname}/config/datastore`); +let mongodb_uri = datastore.mongodb_uri || process.env.MONGODB_URI || 'localhost'; // Include data models -fs.readdirSync(__dirname + '/app/models').forEach(function(file) { - if (path.extname(file)) require(__dirname + '/app/models/' + file); +fs.readdirSync(`${__dirname}/app/models`).forEach((file) => { + if (path.extname(file)) require(`${__dirname}/app/models/${file}`); }); // Configure Express view engines and middleware -app.set('views', __dirname + '/app/views'); +app.set('views', `${__dirname}/app/views`); app.set('view engine', 'jade'); app.locals.pretty = true; -app.use(stylus.middleware(__dirname + '/public')); -app.use(express.static(__dirname + '/public')); +app.use(stylus.middleware(`${__dirname}/public`)); +app.use(express.static(`${__dirname}/public`)); app.use(morgan('dev')); // Setup view controller @@ -47,9 +47,9 @@ app.use(session({secret: uuid.v4(), saveUninitialized: true, resave: true})); app.use(multer()); app.use(flash()); -var Clock = require(__dirname + '/app/controllers/clock'); -var Admin = require(__dirname + '/app/controllers/admin'); -var Wallpaper = require(__dirname + '/app/controllers/wallpaper'); +let Clock = require(`${__dirname}/app/controllers/clock`); +let Admin = require(`${__dirname}/app/controllers/admin`); +let Wallpaper = require(`${__dirname}/app/controllers/wallpaper`); // Allow controllers to use Socket.IO. If there is a better way to do this, I // would love to know. @@ -59,11 +59,11 @@ app.locals.io = io; console.log('Connecting to MongoDB...'); mongoose.connect(mongodb_uri); -var db = mongoose.connection; +let db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); -db.once('open', function() { +db.once('open', () => { console.log('Connected!'); app.use('/', Clock); @@ -71,13 +71,13 @@ db.once('open', function() { app.use('/wallpaper', Wallpaper); // Setup 404 - app.use(function(req, res, next) { + app.use((req, res, next) => { res.status(404); res.render('404'); }); - var port = process.env.PORT || 3000; - server.listen(port, function() { - console.log('Listening on port ' + port); + let port = process.env.PORT || 3000; + server.listen(port, () => { + console.log(`Listening on port ${port}`); }); }); diff --git a/index.js b/index.js index 876004a..b16d13a 100644 --- a/index.js +++ b/index.js @@ -1 +1,2 @@ +require('babel/register'); module.exports = require('./clock'); diff --git a/package.json b/package.json index a9b5159..5880724 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,12 @@ "url": "https://github.com/fhsav/clock.js.git" }, "scripts": { - "start": "node clock", + "start": "node index", "install": "bower install", "test": "make test" }, "dependencies": { + "babel" : "5.0.x", "bower" : "1.3.x", "async" : "0.9.x",