64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
'use strict'
|
|
|
|
const { makeLogo } = require('./logos')
|
|
|
|
function toArray(val) {
|
|
if (val === undefined) {
|
|
return []
|
|
} else if (Object(val) instanceof Array) {
|
|
return val
|
|
} else {
|
|
return [val]
|
|
}
|
|
}
|
|
|
|
function makeLabel(defaultLabel, overrides) {
|
|
return `${
|
|
overrides.label === undefined
|
|
? (defaultLabel || '').toLowerCase()
|
|
: overrides.label
|
|
}`
|
|
}
|
|
|
|
// Generate the initial badge data. Pass the URL query parameters, which
|
|
// override the default label.
|
|
//
|
|
// The following parameters are supported:
|
|
//
|
|
// - label
|
|
// - style
|
|
// - logo
|
|
// - logoWidth
|
|
// - link
|
|
// - colorA
|
|
// - colorB
|
|
// - maxAge
|
|
//
|
|
// Note: maxAge is handled by cache(), not this function.
|
|
function makeBadgeData(defaultLabel, overrides) {
|
|
return {
|
|
text: [makeLabel(defaultLabel, overrides), 'n/a'],
|
|
colorscheme: 'lightgrey',
|
|
template: overrides.style,
|
|
logo: makeLogo(undefined, overrides),
|
|
logoPosition: +overrides.logoPosition,
|
|
logoWidth: +overrides.logoWidth,
|
|
links: toArray(overrides.link),
|
|
// Scoutcamp sometimes turns these into numbers.
|
|
colorA:
|
|
typeof overrides.colorA === 'number'
|
|
? `${overrides.colorA}`
|
|
: overrides.colorA,
|
|
colorB:
|
|
typeof overrides.colorB === 'number'
|
|
? `${overrides.colorB}`
|
|
: overrides.colorB,
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
toArray,
|
|
makeLabel,
|
|
makeBadgeData,
|
|
}
|