I have following script that displays table with the deals that happened Weekly .
I want to do it monthly and daily . I am having trouble doing monthly because all the month in a year wont have same interval .
Script
$('#test').click(function () {
// Here are the two dates to compare
var date1 = '29-10-2015';
var date2 = '29-12-2015';
var Targetvalue = parseFloat("1000000");
var dealjson = '[{"dealdate":"25-12-2015","cost":200000},{"dealdate":"25-11-2015","cost":200000}]';
// First we split the values to arrays date1[0] is the year, [1] the month and [2] the day
date1 = date1.split('-');
date2 = date2.split('-');
// Now we convert the array to a Date object, which has several helpful methods
date1 = new Date(date1[2], date1[1], date1[0]);
date2 = new Date(date2[2], date2[1], date2[0]);
var deals = JSON.parse(dealjson);
var achieved = 0;
date1_unixtime = parseInt(date1.getTime() / 1000);
date2_unixtime = parseInt(date2.getTime() / 1000);
// This is the calculated difference in seconds
var timeDifference = date2_unixtime - date1_unixtime;
// in Hours
var timeDifferenceInHours = timeDifference / 60 / 60;
// and finaly, in days :)
var timeDifferenceInDays = timeDifferenceInHours / 24;
var timeDifferenceInWeeks = Math.round(timeDifferenceInDays / 7);
// alert(timeDifferenceInDays/7);
TargetPerweek = Targetvalue / timeDifferenceInWeeks;
TargetPerday = Targetvalue / timeDifferenceInDays;
//Math.round(timeDifferenceInWeeks);
TargetPerweek = Math.round(TargetPerweek * 100) / 100;
var str = '<table class="table table-striped table-bordered bootstrap-datatable datatable responsive"> <thead><tr> <th>Week</th> <th>Target</th> <th>Achieved</th> </tr></thead>';
var i = 0;
while (date1 <= date2) {
var next_week = new Date(date1);
next_week.setDate(date1.getDate() + 7);
achieved = 0;
deals.forEach(function (deal) {
var dealDate = deal.dealdate;
dealDate = dealDate.split('-');
dealDate = new Date(dealDate[2], dealDate[1], dealDate[0]);
if (dealDate >= date1 && dealDate <= next_week) {
achieved = achieved + deal.cost;
}
});
i = i + 1;
str = str + "<tr><th>Week" + i + "</th><td>" + TargetPerweek + "</td><td> " + achieved + "</td></tr>";
date1 = next_week;
}
str = str + "</table>";
$('.varianceData').html(str);
});
Basically if you observe this part of code
var str = '<table class="table table-striped table-bordered bootstrap-datatable datatable responsive"> <thead><tr> <th>Week</th> <th>Target</th> <th>Achieved</th> </tr></thead>';
var i = 0;
while (date1 <= date2) {
var next_week = new Date(date1);
next_week.setDate(date1.getDate() + 7);
achieved = 0;
deals.forEach(function (deal) {
var dealDate = deal.dealdate;
dealDate = dealDate.split('-');
dealDate = new Date(dealDate[2], dealDate[1], dealDate[0]);
if (dealDate >= date1 && dealDate <= next_week) {
achieved = achieved + deal.cost;
}
});
i = i + 1;
str = str + "<tr><th>Week" + i + "</th><td>" + TargetPerweek + "</td><td> " + achieved + "</td></tr>";
date1 = next_week;
}
You will get to know how I am building the weekwise table so I was just incrementing the loop 7 times .
I want to show another table with Month Wise and Date wise