PHP Classes

File: public/admin/js/pignose.calender.js

Recommend this page to a friend!
  Classes of Taranpreet Singh   PHP End Game Engine Website   public/admin/js/pignose.calender.js   Download  
File: public/admin/js/pignose.calender.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: PHP End Game Engine Website
Build Web sites for promoting games
Author: By
Last change:
Date: 4 years ago
Size: 16,010 bytes
 

Contents

Class file image Download
/************************************************************************************************************ * * @ Version 1.1.4 * @ PIGNOSE Calender * @ Date Oct 05. 2016 * @ Author PIGNOSE * @ Licensed under MIT. * ***********************************************************************************************************/ var ComponentName = 'pignoseCalender'; /************************************************************************************************************ * * @ Version 1.0.0 * @ PIGNOSE PLUGIN HELPER * @ Date Oct 05. 2016 * @ Author PIGNOSE * @ Licensed under MIT. * ***********************************************************************************************************/ function DateManager(d) { this.year = parseInt(d.format('YYYY'), 10); this.month = parseInt(d.format('MM'), 10); this.prevMonth = parseInt(d.clone().add(-1, 'months').format('MM'), 10); this.nextMonth = parseInt(d.clone().add(1, 'months').format('MM'), 10); this.day = parseInt(d.format('DD'), 10); this.firstDay = 1; this.lastDay = parseInt(d.clone().endOf('month').format('DD'), 10); this.weekDay = d.weekday(); this.date = d; }; DateManager.prototype.toString = function() { return this.date.format('YYYY-MM-DD'); }; DateManager.Convert = function(year, month, day) { var date = Helper.Format('{0}-{1}-{2}', year, month, day); return moment(date, 'YYYY-MM-DD'); }; function Helper() { }; Helper.Format = function(format) { if(typeof format === 'undefined' || format === '' || arguments.length <= 1) { return ''; } else { var args = Array.prototype.slice.call(arguments, 1); for(var idx in args) { var value = args[idx]; format = format.replace(new RegExp(('((?!\\\\)?\\{' + idx + '(?!\\\\)?\\})'), 'g'), value); } } return format; }; Helper.GetClass = function(name) { var chars = name.split(''); var className = ''; for(var idx in chars) { var char = chars[idx]; if(typeof char !== 'string') { continue; } if(/[A-Z]/.test(char) === true) { className += '-'; char = char.toString().toLowerCase(); } className += char.toString(); } return className; }; Helper.GetSubClass = function(name) { return Helper.GetClass(Helper.Format('{0}{1}', ComponentName, name)); }; /************************************************************************************************************ * * @ Helper's folyfills * ***********************************************************************************************************/ if(typeof Array.prototype.filter === 'undefined') { Array.prototype.filter = function(func) { 'use strict'; if (this == null) { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; if (typeof func !== 'function') { return []; } var res = []; var thisp = arguments[1]; for (var i = 0; i<len; i++) { if (i in t) { var val = t[i]; // in case fun mutates this if (func.call(thisp, val, i, t)) { res.push(val); } } } return res; }; } /************************************************************************************************************ * * @ Component define region. * ***********************************************************************************************************/ var ComponentClass = Helper.GetClass(ComponentName); (function($) { 'use strict'; var _calenderTopClass = Helper.GetSubClass('Top'); var _calenderHeaderClass = Helper.GetSubClass('Header'); var _calenderBodyClass = Helper.GetSubClass('Body'); var languagePack = { supports: ['en', 'ko', 'fr', 'ch', 'de', 'jp'], weeks: { en: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], ko: ['?', '?', '?', '?', '?', '?', '?'], fr: ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'], ch: ['?', '?', '?', '?', '?', '?', '?'], de: ['Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam', 'Son'], jp: ['?', '?', '?', '?', '?', '?', '?'], }, monthsLong: { en: ['January', 'February', 'March', 'April', 'May', 'Jun', 'July', 'August', 'September', 'October', 'November', 'December'], ko: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?'], fr: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'], ch: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?'], de: ['Jänner', 'Feber', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], jp: ['??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '???', '???'], }, months: { en: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], ko: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?'], fr: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc'], ch: ['1?', '2?', '3?', '4?', '5?', '6?', '7?', '8?', '9?', '10?', '11?', '12?'], de: ['Jän', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], jp: ['??', '??', '??', '??', '??', '??', '??', '??', '??', '??', '???', '???'], } }; $.fn[ComponentName] = function(options) { var Component = { init : function(options) { var _this = this; this.settings = $.extend({ lang: 'en', date: moment(), format: 'YYYY-MM-DD', weeks: languagePack.weeks.en, monthsLong: languagePack.monthsLong.en, months: languagePack.months.en, multiple: false, toggle: false }, options); if(this.settings.lang !== 'en' && !!$.inArray(this.settings.lang, languagePack.supports) === true) { this.settings.weeks = languagePack.weeks[this.settings.lang]; this.settings.monthsLong = languagePack.monthsLong[this.settings.lang]; this.settings.months = languagePack.months[this.settings.lang]; } this.global = { calender: $(Helper.Format('<div class="{0}">\ <div class="{1}">\ <a href="#" class="{1}-nav {1}-prev">\ <span class="{1}-icon"></span>\ <span class="{1}-value"></span>\ </a>\ <div class="{1}-date">\ <p class="{1}-month"></p>\ <h3 class="{1}-year"></h3>\ </div>\ <a href="#" class="{1}-nav {1}-next">\ <span class="{1}-value"></span>\ <span class="{1}-icon"></span>\ </a>\ </div>\ <div class="{2}"></div>\ <div class="{3}"></div>\ </div>', ComponentClass, _calenderTopClass, _calenderHeaderClass, _calenderBodyClass)) }; for(var idx in _this.settings.weeks) { var week = _this.settings.weeks[idx]; if(typeof week !== 'string') { continue; } week = week.toUpperCase(); var $unit = $(Helper.Format('<div class="{0} {0}-{2}">{1}</div>', Helper.GetSubClass('Week'), week, languagePack.weeks.en[idx].toLowerCase())); $unit.appendTo(_this.global.calender.find('.' + _calenderHeaderClass)); } return this.each(function() { var $this = $(this); var dateManager = new DateManager(_this.settings.date); var local = { current: [dateManager.date, null], storage: { activeDates: [] }, dateManager: dateManager }; this.local = local; var rendering = function() { _this.global.calender.appendTo($this.empty()); _this.global.calender.find('.' + _calenderTopClass + '-year').text(dateManager.year); _this.global.calender.find('.' + _calenderTopClass + '-month').text(_this.settings.monthsLong[dateManager.month - 1]); _this.global.calender.find(Helper.Format('.{0}-prev .{0}-value', _calenderTopClass)).text(_this.settings.months[dateManager.prevMonth - 1].toUpperCase()); _this.global.calender.find(Helper.Format('.{0}-next .{0}-value', _calenderTopClass)).text(_this.settings.months[dateManager.nextMonth - 1].toUpperCase()); var $calenderBody = _this.global.calender.find('.' + _calenderBodyClass).empty(); var firstDate = DateManager.Convert(dateManager.year, dateManager.month, dateManager.firstDay); var firstWeekday = firstDate.weekday(); var $unitList = $(); var rangeClass = Helper.GetSubClass('UnitRange'); var rangeFirstClass = Helper.GetSubClass('UnitRangeFirst'); var rangeLastClass = Helper.GetSubClass('UnitRangeLast'); var activeClass = Helper.GetSubClass('UnitActive'); var activePositionClasses = [Helper.GetSubClass('UnitFirstActive'), Helper.GetSubClass('UnitSecondActive')]; var toggleClass = Helper.GetSubClass('UnitToggle'); for(var i=0; i<firstWeekday; i++) { var $unit = $(Helper.Format('<div class="{0} {0}-{1}"></div>', Helper.GetSubClass('Unit'), languagePack.weeks.en[i].toLowerCase())); $unitList = $unitList.add($unit); } for(var i=dateManager.firstDay; i<=dateManager.lastDay; i++) { var iDate = DateManager.Convert(dateManager.year, dateManager.month, i); var $unit = $(Helper.Format('<div class="{0} {0}-date {0}-{3}" data-date="{1}"><a href="#">{2}</a></div>', Helper.GetSubClass('Unit'), iDate.format('YYYY-MM-DD'), i, languagePack.weeks.en[iDate.weekday()].toLowerCase())); if(_this.settings.toggle === false) { if((local.current[0] !== null && iDate.format('YYYY-MM-DD') === local.current[0].format('YYYY-MM-DD'))) { $unit.addClass(activeClass).addClass(activePositionClasses[0]); } if((local.current[1] !== null && iDate.format('YYYY-MM-DD') === local.current[1].format('YYYY-MM-DD'))) { $unit.addClass(activeClass).addClass(activePositionClasses[1]); } } else { if(!!$.inArray(iDate.format('YYYY-MM-DD'), local.storage.activeDates) === true && local.storage.activeDates.length > 0) { $unit.addClass(toggleClass); } } $unitList = $unitList.add($unit); $unit.bind('click', function(event) { event.preventDefault(); event.stopPropagation(); var $this = $(this); var position = 0; if(_this.settings.toggle === true) { var date = $this.data('date'); var match = local.storage.activeDates.filter(function(e, i) { return e == date; }); local.current[position] = moment(date); if(match.length < 1) { local.storage.activeDates.push(date); $this.addClass(toggleClass); } else { var index = 0; for(var idx in local.storage.activeDates) { var targetDate = local.storage.activeDates[idx]; if(date == targetDate) { index = idx; break; } } local.storage.activeDates.splice(index, 1); $this.removeClass(toggleClass); } } else { if(_this.settings.multiple === true) { _this.global.calender.find('.' + rangeClass).removeClass(rangeClass).removeClass(rangeFirstClass).removeClass(rangeLastClass); } if($this.hasClass(activeClass)) { if(_this.settings.multiple === true) { if($this.hasClass(activePositionClasses[0])) { position = 0; } else if(activePositionClasses[1]) { position = 1; } } $this.removeClass(activeClass).removeClass(activePositionClasses[position]); local.current[position] = null; } else { if(_this.settings.multiple === true) { if(local.current[0] === null) { position = 0; } else if(local.current[1] === null) { position = 1; } else { position = 0; local.current[1] = null; _this.global.calender.find('.' + activeClass + '.' + activePositionClasses[1]).removeClass(activeClass).removeClass(activePositionClasses[1]); } } _this.global.calender.find('.' + activeClass + '.' + activePositionClasses[position]).removeClass(activeClass).removeClass(activePositionClasses[position]); $this.addClass(activeClass).addClass(activePositionClasses[position]); local.current[position] = moment($this.data('date')); if(position == 1) { if(local.current[0].diff(local.current[1]) > 0) { var tmp = local.current[0]; local.current[0] = local.current[1]; local.current[1] = tmp; tmp = null; _this.global.calender.find('.' + activeClass).each(function() { for(var idx in activePositionClasses) { var className = activePositionClasses[idx]; $(this).toggleClass(className); } }); } } if(local.current[0] !== null && local.current[1] !== null) { var firstDay = parseInt(local.current[0].format('DD'), 10); var lastDay = parseInt(local.current[1].format('DD'), 10); for(var i = firstDay + 1; i<lastDay; i++) { var date = DateManager.Convert(dateManager.year, dateManager.month, i).format('YYYY-MM-DD'); var $target = _this.global.calender.find(Helper.Format('.{0}[data-date="{1}"]', Helper.GetSubClass('Unit'), date)).addClass(rangeClass); if(i === firstDay + 1) { $target.addClass(rangeFirstClass); } if(i === lastDay - 1) { $target.addClass(rangeLastClass); } } } } } if(typeof _this.settings.select === 'function') { $.extend(local.storage, _this.global); _this.settings.select.call($this, local.current, local.storage); } }); } var lastDate = DateManager.Convert(dateManager.year, dateManager.month, dateManager.lastDay); var lastWeekday = lastDate.weekday(); for(var i=lastWeekday+1;$unitList.length <= 7 * 5;i++) { var $unit = $(Helper.Format('<div class="{0} {0}-{1}"></div>', Helper.GetSubClass('Unit'), languagePack.weeks.en[i % 7].toLowerCase())); $unitList = $unitList.add($unit); } var $row = null; $unitList.each(function(i, e) { if(i % 7 == 0 || i + 1 >= $unitList.length) { if($row != null) { $row.appendTo($calenderBody); } if(i + 1 < $unitList.length) { $row = $(Helper.Format('<div class="{0}"></div>', Helper.GetSubClass('Row'))); } } $row.append($(this)); }); _this.global.calender.find('.' + _calenderTopClass + '-nav').bind('click', function(event) { event.preventDefault(); event.stopPropagation(); var $this = $(this); if($this.hasClass(_calenderTopClass + '-prev')) { dateManager = new DateManager(dateManager.date.add(-1, 'months')); rendering(); } else if($this.hasClass(_calenderTopClass + '-next')) { dateManager = new DateManager(dateManager.date.add(1, 'months')); rendering(); } }); }; rendering(); }); }, select: function(day) { this.each(function() { var local = this.local; var dateManager = local.dateManager; var date = Helper.Format('{0}-{1}-{2}', dateManager.year, dateManager.month, day); $(this).find(Helper.Format('.{0}[data-date="{1}"]', Helper.GetSubClass('Unit'), date)).triggerHandler('click'); }); } }; if(Component[options]) { return Component[options].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof options === 'object' || !options) { return Component.init.apply(this, arguments); } else { console.error('Argument error are occured.'); } }; })(jQuery);