AngularJS Example
by Urigo
HTML
<div ng-app>
<div ng-controller="Ctrl">
<ul id="calendar">
<li ng-repeat="year in years" class="years">
<h1>{{year.name}}</h1>
<ul class="months">
<li ng-repeat="month in year.months">
<h1>{{month.name}}{{month.number}}</h1>
<ul class="days">
<li ng-repeat="day in month.days">
<h2>{{day.date}}</h2>
<h4>{{day.name}}</h4>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
CSS
</style> <!-- Ugly Hack due to jsFiddle issue: http://goo.gl/BUfGZ -->
<script src="http://docs.angularjs.org/angular-1.0.1.min.js"></script>
<style>
.ng-invalid { border: 1px solid red; }
JavaScript
Date.prototype.getMonthName = function() {
var m = ['ינואר','פברואר','מרץ','אפריל','מאי','יוני','יולי',
'אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'];
return m[this.getMonth()];
};
Date.prototype.getDayName = function() {
var m = ['יום א','יום ב','יום ג','יום ד','יום ה','יום ו','יום ש'];
return m[this.getDay()];
};
function Ctrl($scope) {
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
function toObject(arr) {
var rv = {};
for (var i = 0; i < arr.length; ++i)
if (arr[i] !== undefined) rv[String.fromCharCode(94 + i)] = arr[i];
return rv;
}
$scope.getDates = function(startDate, stopDate) {
var years = {};
var currentDate = startDate;
var currentYear = {};
currentYear.name = currentDate.getFullYear();
years[currentYear.name] = currentYear;
var months = [];
var currentMonth = {};
currentMonth.number = Number(currentDate.getMonth()+1);
currentMonth.name = currentDate.getMonthName();
months.push(currentMonth);
years[currentYear.name]['months'] = toObject(months);
var days = [];
while (currentDate <= stopDate) {
if (currentDate.getFullYear() != currentYear.name)
{
months = [];
currentYear = {};
currentYear.name = currentDate.getFullYear();
years[currentYear.name] = currentYear;
}
if ((currentDate.getMonth()+1) != currentMonth.number)
{
currentMonth = {};
days = [];
currentMonth.number = Number(currentDate.getMonth()+1);
...