|
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