Add superblock ordering
This commit is contained in:
@ -36,6 +36,10 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"description": "Used for ordering challenge blocks in map"
|
"description": "Used for ordering challenge blocks in map"
|
||||||
},
|
},
|
||||||
|
"superBlockOrder": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "Used to determine superBlock order, set by prepending two digit number to super block folder name"
|
||||||
|
},
|
||||||
"block": {
|
"block": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
/* eslint-disable no-self-compare */
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var path = require('path');
|
var path = require('path');
|
||||||
|
|
||||||
|
|
||||||
function getFilesFor(dir) {
|
function getFilesFor(dir) {
|
||||||
return fs.readdirSync(path.join(__dirname, '/' + dir))
|
return fs.readdirSync(path.join(__dirname, '/' + dir))
|
||||||
.map(function(file) {
|
.map(function(file) {
|
||||||
@ -27,13 +27,33 @@ function getFilesFor(dir) {
|
|||||||
}, []);
|
}, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSupOrder(filePath) {
|
||||||
|
var order = parseInt((filePath || '').split('-')[0], 10);
|
||||||
|
// check for NaN
|
||||||
|
if (order !== order) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return order;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSupName(filePath) {
|
||||||
|
var order = parseInt((filePath || '').split('-')[0], 10);
|
||||||
|
// check for NaN
|
||||||
|
if (order !== order) {
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (filePath || '').split('-').splice(1).join('-');
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = function getChallenges() {
|
module.exports = function getChallenges() {
|
||||||
try {
|
try {
|
||||||
return getFilesFor('challenges')
|
return getFilesFor('challenges')
|
||||||
.map(function(data) {
|
.map(function(data) {
|
||||||
var challengeSpec = require('./challenges/' + data.file);
|
var challengeSpec = require('./challenges/' + data.file);
|
||||||
challengeSpec.fileName = data.file;
|
challengeSpec.fileName = data.file;
|
||||||
challengeSpec.superBlock = data.superBlock;
|
challengeSpec.superBlock = getSupName(data.superBlock);
|
||||||
|
challengeSpec.superBlockOrder = getSupOrder(data.superBlock);
|
||||||
|
|
||||||
return challengeSpec;
|
return challengeSpec;
|
||||||
});
|
});
|
||||||
|
@ -18,6 +18,7 @@ destroy()
|
|||||||
var order = challengeSpec.order;
|
var order = challengeSpec.order;
|
||||||
var block = challengeSpec.name;
|
var block = challengeSpec.name;
|
||||||
var superBlock = challengeSpec.superBlock;
|
var superBlock = challengeSpec.superBlock;
|
||||||
|
var superBlockOrder = challengeSpec.superBlockOrder;
|
||||||
var isBeta = !!challengeSpec.isBeta;
|
var isBeta = !!challengeSpec.isBeta;
|
||||||
var fileName = challengeSpec.fileName;
|
var fileName = challengeSpec.fileName;
|
||||||
console.log('parsed %s successfully', block);
|
console.log('parsed %s successfully', block);
|
||||||
@ -46,6 +47,7 @@ destroy()
|
|||||||
challenge.block = block;
|
challenge.block = block;
|
||||||
challenge.isBeta = challenge.isBeta || isBeta;
|
challenge.isBeta = challenge.isBeta || isBeta;
|
||||||
challenge.time = challengeSpec.time;
|
challenge.time = challengeSpec.time;
|
||||||
|
challenge.superBlockOrder = superBlockOrder;
|
||||||
challenge.superBlock = superBlock
|
challenge.superBlock = superBlock
|
||||||
.split('-')
|
.split('-')
|
||||||
.map(function(word) {
|
.map(function(word) {
|
||||||
|
@ -109,6 +109,7 @@ module.exports = function(app) {
|
|||||||
|
|
||||||
const challengesQuery = {
|
const challengesQuery = {
|
||||||
order: [
|
order: [
|
||||||
|
'superOrder ASC',
|
||||||
'order ASC',
|
'order ASC',
|
||||||
'suborder ASC'
|
'suborder ASC'
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user