loopGenerator
loop generator function
by gopi1410
HTML
<body>
<p id="out">
</p>
</body>
JavaScript
// TYPE DOBBY
var ad1 = {type:1, content: [{id:1, url:"https://via.placeholder.com/150", duration: 15}, {id:2, url:"https://via.placeholder.com/150", duration: 15}]};
// TYPE RETAILER
var ad2 = {type:2, content: [{id:3, url:"https://via.placeholder.com/150", duration: 10}, {id:4, url:"https://via.placeholder.com/150", duration: 10}, {id:5, url:"https://via.placeholder.com/150", duration: 10}]};
var ad3 = {type:2, content: [{id:6, url:"https://via.placeholder.com/150", duration: 25}]};
// TYPE ADVERTISER
var ad4 = {type:3, content: [{id:7, url:"https://via.placeholder.com/150", duration: 40}, {id:8, url:"https://via.placeholder.com/150", duration: 15}, {id:9, url:"https://via.placeholder.com/150", duration: 30}]};
var ad5 = {type:3, content: [{id:10, url:"https://via.placeholder.com/150", duration: 30}]};
// CONSTANTS FROM CONFIG
const SLOT_TIME = 5;
const TOTAL_SLOTS = 35;
const STORE_SLOTS = 5;
const DOBBY_SLOTS = 5;
// MASTER LIST WHICH COMES AS JSON LIKE THIS FROM API SERVER
var ad_list = [ad1, ad2, ad3, ad4, ad5];
document.getElementById("out").innerHTML = generator(ad_list);
function generator(ad_list) {
let dobby = ad_list.filter(function(item) {
return item.type == 1;
});
let retailer = ad_list.filter(function(item) {
return item.type == 2;
});
let advertiser = ad_list.filter(function(item) {
return item.type == 3;
});
let dobContent = [].concat.apply([], dobby.map(ad => ad.content));
let retContent = [].concat.apply([], retailer.map(ad => ad.content));
let advContent = [].concat.apply([], advertiser.map(ad => ad.content));
let dobSlots = calculateSlots(dobContent);
let retSlots = calculateSlots(retContent);
let advSlots = calculateSlots(advContent);
/* console.log(dobContent);
console.log(retContent);
console.log(advContent); */
let allowedAdvSlots = TOTAL_SLOTS - STORE_SLOTS - DOBBY_SLOTS;
if (advSlots > allowedAdvSlots) {
// TODO raise a flag, but continue
console.log("consistency error: ad...