From c446a3ac1ccb3d3142afc10f342fc6823a913d65 Mon Sep 17 00:00:00 2001 From: Michael Katkov Date: Mon, 5 Mar 2018 11:33:36 +0200 Subject: [PATCH] Bug 1887 fixed --- Nynja/Extensions/Date+Extension.swift | 5 +++++ .../View/Calendar/NynjaCalendarDataSource.swift | 15 ++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Nynja/Extensions/Date+Extension.swift b/Nynja/Extensions/Date+Extension.swift index 0560632ee..788e7af2a 100644 --- a/Nynja/Extensions/Date+Extension.swift +++ b/Nynja/Extensions/Date+Extension.swift @@ -56,4 +56,9 @@ extension Date { return calender.date(from: dateComponents) } } + + var startOfDay: Date { + return Calendar.current.startOfDay(for: self) + } + } diff --git a/Nynja/Modules/DateTimePicker/View/Calendar/NynjaCalendarDataSource.swift b/Nynja/Modules/DateTimePicker/View/Calendar/NynjaCalendarDataSource.swift index d97f02418..41ded3302 100644 --- a/Nynja/Modules/DateTimePicker/View/Calendar/NynjaCalendarDataSource.swift +++ b/Nynja/Modules/DateTimePicker/View/Calendar/NynjaCalendarDataSource.swift @@ -19,7 +19,7 @@ class NynjaCalendarDataSource: JTAppleCalendarViewDelegate, JTAppleCalendarViewD func configureCalendar(_ calendar: JTAppleCalendarView) -> ConfigurationParameters { let startDate = Date() let endDate = Calendar.current.date(byAdding: .year, value: 1, to: startDate) - let parameters = ConfigurationParameters(startDate: startDate, endDate: endDate!) + let parameters = ConfigurationParameters(startDate: startDate, endDate: endDate!, firstDayOfWeek: .monday) return parameters } @@ -27,19 +27,19 @@ class NynjaCalendarDataSource: JTAppleCalendarViewDelegate, JTAppleCalendarViewD let cell = calendar.dequeueReusableJTAppleCell(withReuseIdentifier: NynjaCalendarCell.cellId, for: indexPath) as! NynjaCalendarCell cell.titleLabel.text = cellState.text handleCellSelected(cell: cell, cellState: cellState) - handleCellTextColor(cell: cell, cellState: cellState) + handleCellState(cell: cell, cellState: cellState) return cell } func calendar(_ calendar: JTAppleCalendarView, didSelectDate date: Date, cell: JTAppleCell?, cellState: CellState) { handleCellSelected(cell: cell, cellState: cellState) - handleCellTextColor(cell: cell, cellState: cellState) + handleCellState(cell: cell, cellState: cellState) delegate?.didDateSelect(date: date) } func calendar(_ calendar: JTAppleCalendarView, didDeselectDate date: Date, cell: JTAppleCell?, cellState: CellState) { handleCellSelected(cell: cell, cellState: cellState) - handleCellTextColor(cell: cell, cellState: cellState) + handleCellState(cell: cell, cellState: cellState) } func handleCellSelected(cell: JTAppleCell?, cellState: CellState) { @@ -48,8 +48,13 @@ class NynjaCalendarDataSource: JTAppleCalendarViewDelegate, JTAppleCalendarViewD validCell.titleLabel.layer.zPosition = cellState.isSelected ? 1 : 0 } - func handleCellTextColor(cell: JTAppleCell?, cellState: CellState) { + func handleCellState(cell: JTAppleCell?, cellState: CellState) { guard let validCell = cell as? NynjaCalendarCell else { return } + //hide all the dates, which don't belong to the current month validCell.isHidden = cellState.dateBelongsTo != .thisMonth + //gray and disable all the dates before today + let beforeToday = cellState.date.startOfDay < Date().startOfDay + validCell.titleLabel.textColor = beforeToday ? Constants.colors.darkGray.getColor() : Constants.colors.white.getColor() + validCell.isUserInteractionEnabled = !beforeToday } } -- GitLab