|
639 | 639 | bindToController: true,
|
640 | 640 | controllerAs: 'cal',
|
641 | 641 | controller: ['$scope', function ($scope) {
|
| 642 | + var calendar = this, picker; |
| 643 | + |
642 | 644 | this.$onInit = function () {
|
643 |
| - var calendar = this, |
644 |
| - picker = this.picker, |
645 |
| - days = []; |
| 645 | + picker = this.picker; |
646 | 646 |
|
| 647 | + var days = []; |
647 | 648 | for (var i = picker.params.weekStart; days.length < 7; i++) {
|
648 | 649 | if (i > 6) {
|
649 | 650 | i = 0;
|
650 | 651 | }
|
651 | 652 | days.push(i.toString());
|
652 | 653 | }
|
653 |
| - |
654 | 654 | calendar.week = days;
|
| 655 | + |
655 | 656 | if (!picker.maxDate && !picker.minDate) {
|
656 | 657 | calendar.months = MONTHS;
|
657 | 658 | } else {
|
|
660 | 661 | calendar.months = MONTHS.slice(low, high);
|
661 | 662 | }
|
662 | 663 |
|
663 |
| - calendar.getItemAtIndex = function (index) { |
664 |
| - var month = ((index + 1) % 12) || 12; |
665 |
| - var year = YEAR_MIN + Math.floor(index / 12); |
666 |
| - var monthObj = moment(picker.currentDate).year(year).month(month); |
667 |
| - return generateMonthCalendar(monthObj); |
668 |
| - }; |
669 |
| - |
670 | 664 | calendar.topIndex = currentMonthIndex(picker.currentDate) - calendar.months[0];
|
| 665 | + }; |
671 | 666 |
|
672 |
| - $scope.$watch(function () { |
673 |
| - return picker.currentDate ? picker.currentDate.format('YYYY-MM') : ''; |
674 |
| - }, function (val2, val1) { |
675 |
| - if (val2 != val1) { |
676 |
| - var nDate = moment(val2, 'YYYY-MM'); |
677 |
| - var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0; |
678 |
| - var index = currentMonthIndex(nDate, low); |
679 |
| - if (calendar.topIndex != index) { |
680 |
| - calendar.topIndex = index; |
681 |
| - } |
| 667 | + if (angular.version.major === 1 && angular.version.minor < 5) { |
| 668 | + this.$onInit(); |
| 669 | + } |
| 670 | + |
| 671 | + calendar.getItemAtIndex = function (index) { |
| 672 | + var month = ((index + 1) % 12) || 12; |
| 673 | + var year = YEAR_MIN + Math.floor(index / 12); |
| 674 | + var monthObj = moment(picker.currentDate).year(year).month(month); |
| 675 | + return generateMonthCalendar(monthObj); |
| 676 | + }; |
| 677 | + |
| 678 | + $scope.$watch(function () { |
| 679 | + return picker.currentDate ? picker.currentDate.format('YYYY-MM') : ''; |
| 680 | + }, function (val2, val1) { |
| 681 | + if (val2 != val1) { |
| 682 | + var nDate = moment(val2, 'YYYY-MM'); |
| 683 | + var low = picker.minDate ? currentMonthIndex(picker.minDate) : 0; |
| 684 | + var index = currentMonthIndex(nDate, low); |
| 685 | + if (calendar.topIndex != index) { |
| 686 | + calendar.topIndex = index; |
682 | 687 | }
|
683 |
| - }); |
| 688 | + } |
| 689 | + }); |
684 | 690 |
|
685 |
| - var generateMonthCalendar = function (date) { |
686 |
| - var month = {}; |
687 |
| - if (date !== null) { |
688 |
| - month.name = date.format('MMMM YYYY'); |
689 |
| - var startOfMonth = moment(date).locale(picker.params.lang).startOf('month') |
690 |
| - .hour(date.hour()) |
691 |
| - .minute(date.minute()); |
692 |
| - var iNumDay = startOfMonth.format('d'); |
693 |
| - month.days = []; |
694 |
| - for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) { |
695 |
| - if (i === startOfMonth.date()) { |
696 |
| - var iWeek = calendar.week.indexOf(iNumDay.toString()); |
697 |
| - if (iWeek > 0) { |
698 |
| - for (var x = 0; x < iWeek; x++) { |
699 |
| - month.days.push(0); |
700 |
| - } |
| 691 | + var generateMonthCalendar = function (date) { |
| 692 | + var month = {}; |
| 693 | + if (date !== null) { |
| 694 | + month.name = date.format('MMMM YYYY'); |
| 695 | + var startOfMonth = moment(date).locale(picker.params.lang).startOf('month') |
| 696 | + .hour(date.hour()) |
| 697 | + .minute(date.minute()); |
| 698 | + var iNumDay = startOfMonth.format('d'); |
| 699 | + month.days = []; |
| 700 | + for (var i = startOfMonth.date(); i <= startOfMonth.daysInMonth(); i++) { |
| 701 | + if (i === startOfMonth.date()) { |
| 702 | + var iWeek = calendar.week.indexOf(iNumDay.toString()); |
| 703 | + if (iWeek > 0) { |
| 704 | + for (var x = 0; x < iWeek; x++) { |
| 705 | + month.days.push(0); |
701 | 706 | }
|
702 | 707 | }
|
703 |
| - month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i)); |
704 |
| - } |
705 |
| - |
706 |
| - var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek); |
707 |
| - for (var j = 0; j < slices; j++) { |
708 |
| - daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek)); |
709 | 708 | }
|
710 |
| - month.days = daysTmp; |
711 |
| - return month; |
| 709 | + month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i)); |
712 | 710 | }
|
713 | 711 |
|
714 |
| - }; |
715 |
| - |
716 |
| - calendar.toDay = function (i) { |
717 |
| - return moment(parseInt(i), "d") |
718 |
| - .locale(picker.params.lang) |
719 |
| - .format("dd") |
720 |
| - .substring(0, 1); |
721 |
| - }; |
722 |
| - |
723 |
| - calendar.isInRange = function (date) { |
724 |
| - return picker.isAfterMinDate(moment(date), false, false) && |
725 |
| - picker.isBeforeMaxDate(moment(date), false, false) && |
726 |
| - picker.isInDisableDates(moment(date)); |
727 |
| - }; |
728 |
| - |
729 |
| - calendar.selectDate = function (date) { |
730 |
| - if (date) { |
731 |
| - if (calendar.isSelectedDay(date)) { |
732 |
| - return picker.ok(); |
733 |
| - } |
734 |
| - picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute())); |
735 |
| - if (picker.params.autoOk) { |
736 |
| - picker.ok(); |
737 |
| - } |
| 712 | + var daysInAWeek = 7, daysTmp = [], slices = Math.ceil(month.days.length / daysInAWeek); |
| 713 | + for (var j = 0; j < slices; j++) { |
| 714 | + daysTmp.push(month.days.slice(j * daysInAWeek, (j + 1) * daysInAWeek)); |
738 | 715 | }
|
739 |
| - }; |
| 716 | + month.days = daysTmp; |
| 717 | + return month; |
| 718 | + } |
| 719 | + |
| 720 | + }; |
740 | 721 |
|
741 |
| - calendar.isSelectedDay = function (m) { |
742 |
| - return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year(); |
743 |
| - }; |
| 722 | + calendar.toDay = function (i) { |
| 723 | + return moment(parseInt(i), "d") |
| 724 | + .locale(picker.params.lang) |
| 725 | + .format("dd") |
| 726 | + .substring(0, 1); |
| 727 | + }; |
| 728 | + |
| 729 | + calendar.isInRange = function (date) { |
| 730 | + return picker.isAfterMinDate(moment(date), false, false) && |
| 731 | + picker.isBeforeMaxDate(moment(date), false, false) && |
| 732 | + picker.isInDisableDates(moment(date)); |
| 733 | + }; |
744 | 734 |
|
745 |
| - calendar.isDateOfTheDay = function (m) { |
746 |
| - var today = calendar.picker.options.showTodaysDate; |
747 |
| - if (!today) { |
748 |
| - return false; |
| 735 | + calendar.selectDate = function (date) { |
| 736 | + if (date) { |
| 737 | + if (calendar.isSelectedDay(date)) { |
| 738 | + return picker.ok(); |
| 739 | + } |
| 740 | + picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute())); |
| 741 | + if (picker.params.autoOk) { |
| 742 | + picker.ok(); |
749 | 743 | }
|
| 744 | + } |
| 745 | + }; |
| 746 | + |
| 747 | + calendar.isSelectedDay = function (m) { |
| 748 | + return m && calendar.date.date() === m.date() && calendar.date.month() === m.month() && calendar.date.year() === m.year(); |
| 749 | + }; |
| 750 | + |
| 751 | + calendar.isDateOfTheDay = function (m) { |
| 752 | + var today = calendar.picker.options.showTodaysDate; |
| 753 | + if (!today) { |
| 754 | + return false; |
| 755 | + } |
750 | 756 |
|
751 |
| - return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year(); |
752 |
| - }; |
| 757 | + return m && today.date() === m.date() && today.month() === m.month() && today.year() === m.year(); |
753 | 758 | };
|
754 | 759 | }],
|
755 | 760 | template:
|
|
0 commit comments