ADDED pantheon to each card (duplicate of culture). ADDED demo cards. ADDED wikipedia links to most entries. ADDED Lovecraft Wikia links to all Cthulhu cards. UPDATED to 0.1.6.
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| const
 | |
|   express = require('express'),
 | |
|   sortByName = function(list) {
 | |
|     let
 | |
|       coll_opts = {
 | |
|         sensitivity: 'accent',
 | |
|         numeric: true,
 | |
|         caseFirst: "upper"
 | |
|       },
 | |
|       coll = new Intl.Collator({}, coll_opts);
 | |
|     list.sort((a,b) => {
 | |
|       if (a[field] && b[field]) {
 | |
|         return coll.compare(a[field], b[field]);
 | |
|       }
 | |
|       return 1;
 | |
|     });
 | |
|     return list;
 | |
|   };
 | |
| let router = express.Router();
 | |
| 
 | |
| /* GET home page. */
 | |
| router.get('/', function(req, res) {
 | |
|   res.render('index', { title: 'Welcome', query: (req.query || {}) });
 | |
| });
 | |
| 
 | |
| router.get('/cards/:card_num', (req, res) => {
 | |
|   req.params.card_num = (req.params.card_num || 'all');
 | |
|   let
 | |
|     cards = require('../lib/cards.json'),
 | |
|     links = require('../lib/links.json'),
 | |
|     filtered = cards.filter(card =>
 | |
|         card.num.toLowerCase().indexOf(req.params.card_num.toLowerCase()) > -1 || req.params.card_num.toLowerCase() === 'all'
 | |
|       );
 | |
|   if (filtered.length === 1) {
 | |
|     let card = filtered[0];
 | |
|     if (links && card.hasOwnProperty('name') && links.hasOwnProperty(card.name)) {
 | |
|       Object.assign(card, links[card.name]);
 | |
|     }
 | |
|     res.render('single', { title: card.name + ' (' + card.num + ')', card: card });
 | |
|   } else {
 | |
|     filtered = sortByName(filtered);
 | |
|     res.render('all', { title: 'All Cards', cards: filtered });
 | |
|   }
 | |
| });
 | |
| 
 | |
| router.get('/cards', function(req, res) {
 | |
|   res.redirect('/cards/all');
 | |
| });
 | |
| 
 | |
| module.exports = router;
 |