JSFiddle - React, Tailwind, and code Playground

by Adrian Mejias

HTML

<h3>Debug</h3>

<ul id="debug"></ul>

JavaScript

function debug(msg) {
    console.log(msg);
    $('#debug').append($('<li>').text(msg));
}
var start = {
    year: 2013,
    month: 9,
    day: 1
};
var end = {
    year: 2014,
    month: 9,
    day: 1
};

var absolute = [{
    note: 'rent',
    day: 1,
    amount: 780.00
}];
var relative = [{
    note: 'gas',
    frequency: 14,
    amount: 30.00,
    running: 0
}];

function absoluteFunc(year, month, day, absolute) {
    debug('checking absolute...');
    for (var i = 0; i < absolute.length; i++) {
        if (day == absolute[i].day) {
            debug('* absolute = ' + absolute[i].note);
        }
    }
}

function relativeFunc(year, month, day, relative) {
    debug('checking relative...');
    for (var i = 0; i < relative.length; i++) {
        relative[i].running++;
        if (relative[i].running == relative[i].frequency) {
            debug('* relative = ' + relative[i].note);
            relative[i].running = 0;
        }
    }
}

function generate(absoluteFunc, relativeFunc) {
    debug('start = ' + start.month + '-' + start.day + '-' + start.year + ', end = ' + end.month + '-' + end.day + '-' + end.year);
    for (var year = start.year; year <= end.year; year++) {
        debug('year = ' + year);
        for (var month = 1; month <= 12; month++) {
            if (start.year == year && month < start.month) {
                continue;
            }
            if (end.year == year && month > end.month) {
                break;
            }
            debug('month = ' + month);
            days = new Date(year, month, 0).getDate();
            for (var day = 1; day <= days; day++) {
                debug('day = ' + day);
                absoluteFunc(year, month, day, absolute);
                relativeFunc(year, month, day, relative);
            }
        }
    }
}
generate(absoluteFunc, relativeFunc);