38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import dedent from 'dedent';
 | |
| import moment from 'moment';
 | |
| 
 | |
| import { observeMethod } from '../utils/rx';
 | |
| 
 | |
| function numberWithCommas(x) {
 | |
|   return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
 | |
| }
 | |
| 
 | |
| export default function about(app) {
 | |
|   const router = app.loopback.Router();
 | |
|   const User = app.models.User;
 | |
|   const userCount$ = observeMethod(User, 'count');
 | |
| 
 | |
|   function showAbout(req, res, next) {
 | |
|     const daysRunning = moment().diff(new Date('10/15/2014'), 'days');
 | |
| 
 | |
|     userCount$()
 | |
|       .map(camperCount => numberWithCommas(camperCount))
 | |
|       .doOnNext(camperCount => {
 | |
|         res.render('resources/about', {
 | |
|           camperCount,
 | |
|           daysRunning,
 | |
|           title: dedent`
 | |
|             About our Open Source Community, our social media presence,
 | |
|             and how to contact us`.split('\n').join(' '),
 | |
|           globalCompletedCount: numberWithCommas(
 | |
|             5612952 + (Math.floor((Date.now() - 1446268581061) / 1800))
 | |
|           )
 | |
|         });
 | |
|       })
 | |
|       .subscribe(() => {}, next);
 | |
|   }
 | |
| 
 | |
|   router.get('/about', showAbout);
 | |
|   app.use(router);
 | |
| }
 |