db-vendo-client/parse/products-bitmask.js

33 lines
680 B
JavaScript
Raw Normal View History

2017-11-27 19:39:18 +01:00
'use strict'
const createParseBitmask = (profile) => {
const defaultProducts = {}
let withBitmask = []
for (let product of profile.products) {
2018-03-16 17:06:32 +01:00
defaultProducts[product.id] = false
for (let bitmask of product.bitmasks) {
withBitmask.push([bitmask, product])
}
}
withBitmask.sort((a, b) => b[0] - a[0]) // descending
const parseBitmask = (bitmask) => {
const res = Object.assign({}, defaultProducts)
for (let [pBitmask, product] of withBitmask) {
if ((pBitmask & bitmask) > 0) {
2018-03-16 17:06:32 +01:00
res[product.id] = true
bitmask -= pBitmask
}
2018-03-14 14:50:34 +01:00
else{
2018-04-09 19:37:44 +02:00
res[product.id] = false
2018-03-14 14:50:34 +01:00
}
}
return res
2017-11-27 19:39:18 +01:00
}
return parseBitmask
2017-11-27 19:39:18 +01:00
}
module.exports = createParseBitmask