From 6e459377c3deaa81e109f810a59cb226733bb65e Mon Sep 17 00:00:00 2001 From: minimusic Date: Wed, 12 Dec 2018 11:15:59 -0800 Subject: [PATCH 1/5] blackout style parameters --- KDCalendar/CalendarView/CalendarDayCell.swift | 16 ++++++++++++++++ KDCalendar/CalendarView/CalendarView+Style.swift | 9 ++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/KDCalendar/CalendarView/CalendarDayCell.swift b/KDCalendar/CalendarView/CalendarDayCell.swift index fe31250..474cc13 100644 --- a/KDCalendar/CalendarView/CalendarDayCell.swift +++ b/KDCalendar/CalendarView/CalendarDayCell.swift @@ -68,6 +68,22 @@ open class CalendarDayCell: UICollectionViewCell { } } + var isBlackout: Bool = false { + didSet { + if self.isToday { return } + switch isWeekend { + case true: + self.textLabel.textColor = CalendarView.Style.cellTextColorBlackout + self.bgView.backgroundColor = CalendarView.Style.cellColorBlackout + self.bgView.layer.borderWidth = CalendarView.Style.cellBorderWidthBlackout + case false: + self.bgView.backgroundColor = CalendarView.Style.cellColorDefault + self.bgView.layer.borderWidth = CalendarView.Style.cellBorderWidth + self.textLabel.textColor = CalendarView.Style.cellTextColorDefault + } + } + } + override open var isSelected: Bool { didSet { switch isSelected { diff --git a/KDCalendar/CalendarView/CalendarView+Style.swift b/KDCalendar/CalendarView/CalendarView+Style.swift index 371f342..3b9167d 100644 --- a/KDCalendar/CalendarView/CalendarView+Style.swift +++ b/KDCalendar/CalendarView/CalendarView+Style.swift @@ -9,9 +9,8 @@ import UIKit extension CalendarView { - + /// This is the view model public struct Style { - public enum CellShapeOptions { case round case square @@ -42,7 +41,6 @@ extension CalendarView { //Common public static var cellShape = CellShapeOptions.bevel(4.0) - public static var firstWeekday = FirstWeekdayOptions.monday //Default Style @@ -66,5 +64,10 @@ extension CalendarView { public static var cellBorderWidthWeekend = CGFloat(0.0) public static var cellColorWeekend = UIColor(red:1.00, green:0.84, blue:0.65, alpha:1.00) + //Blackout Style + public static var cellTextColorBlackout = UIColor(red:1.00, green:0.84, blue:0.65, alpha:1.00) + public static var cellBorderWidthBlackout = CGFloat(0.0) + public static var cellColorBlackout = UIColor(red:1.00, green:0.84, blue:0.65, alpha:1.00) + } } From 6c0c51cd6194cc910d6816ed32db6248262e51a4 Mon Sep 17 00:00:00 2001 From: minimusic Date: Wed, 12 Dec 2018 16:32:11 -0800 Subject: [PATCH 2/5] model, modal, muddle --- KDCalendar/CalendarView/CalendarDayCell.swift | 2 +- KDCalendar/CalendarView/CalendarView+DataSource.swift | 2 +- KDCalendar/CalendarView/CalendarView.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/KDCalendar/CalendarView/CalendarDayCell.swift b/KDCalendar/CalendarView/CalendarDayCell.swift index 474cc13..3fdc6cd 100644 --- a/KDCalendar/CalendarView/CalendarDayCell.swift +++ b/KDCalendar/CalendarView/CalendarDayCell.swift @@ -71,7 +71,7 @@ open class CalendarDayCell: UICollectionViewCell { var isBlackout: Bool = false { didSet { if self.isToday { return } - switch isWeekend { + switch isBlackout { case true: self.textLabel.textColor = CalendarView.Style.cellTextColorBlackout self.bgView.backgroundColor = CalendarView.Style.cellColorBlackout diff --git a/KDCalendar/CalendarView/CalendarView+DataSource.swift b/KDCalendar/CalendarView/CalendarView+DataSource.swift index ad7aae7..4e614f7 100644 --- a/KDCalendar/CalendarView/CalendarView+DataSource.swift +++ b/KDCalendar/CalendarView/CalendarView+DataSource.swift @@ -117,7 +117,7 @@ extension CalendarView: UICollectionViewDataSource { } if let delegate = self.delegate, let dateBeingSelected = self.dateFromIndexPath(indexPath) { if delegate.calendar(self, canSelectDate: dateBeingSelected) == false { - dayCell.isWeekend = true + dayCell.isBlackout = true } } if let eventsForDay = self.eventsByIndexPath[indexPath] { diff --git a/KDCalendar/CalendarView/CalendarView.swift b/KDCalendar/CalendarView/CalendarView.swift index 0d38f2f..8b528c3 100644 --- a/KDCalendar/CalendarView/CalendarView.swift +++ b/KDCalendar/CalendarView/CalendarView.swift @@ -81,7 +81,7 @@ public class CalendarView: UIView { public lazy var calendar: Calendar = { var gregorian = Calendar(identifier: .gregorian) - gregorian.timeZone = TimeZone(abbreviation: "UTC")! + //gregorian.timeZone = TimeZone(abbreviation: "UTC")! return gregorian }() From 56fb57c556159462079e8b307fb0d6fb8961dc10 Mon Sep 17 00:00:00 2001 From: minimusic Date: Fri, 14 Dec 2018 15:35:12 -0800 Subject: [PATCH 3/5] fix selection, patch date on API --- .../CalendarView/CalendarHeaderView.swift | 4 +- .../CalendarView/CalendarView+Style.swift | 3 ++ KDCalendar/CalendarView/CalendarView.swift | 44 ++++++++++++++++++- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/KDCalendar/CalendarView/CalendarHeaderView.swift b/KDCalendar/CalendarView/CalendarHeaderView.swift index 8a2b60d..6dfe4fe 100644 --- a/KDCalendar/CalendarView/CalendarHeaderView.swift +++ b/KDCalendar/CalendarView/CalendarHeaderView.swift @@ -49,11 +49,11 @@ open class CalendarHeaderView: UIView { let weekdayLabel = UILabel() - weekdayLabel.font = UIFont(name: CalendarView.Style.headerFontName, size: 14.0) + weekdayLabel.font = UIFont(name: CalendarView.Style.headerDayFontName, size: CalendarView.Style.headerDayFontSize) weekdayLabel.text = formatter.shortWeekdaySymbols[(index % 7)] - weekdayLabel.textColor = CalendarView.Style.headerTextColor + weekdayLabel.textColor = CalendarView.Style.headerDayTextColor weekdayLabel.textAlignment = NSTextAlignment.center v.addSubview(weekdayLabel) diff --git a/KDCalendar/CalendarView/CalendarView+Style.swift b/KDCalendar/CalendarView/CalendarView+Style.swift index 3b9167d..556cb9a 100644 --- a/KDCalendar/CalendarView/CalendarView+Style.swift +++ b/KDCalendar/CalendarView/CalendarView+Style.swift @@ -36,8 +36,11 @@ extension CalendarView { //Header public static var headerHeight: CGFloat = 80.0 public static var headerTextColor = UIColor.gray + public static var headerDayTextColor = UIColor.gray public static var headerFontName: String = "Helvetica" public static var headerFontSize: CGFloat = 20.0 + public static var headerDayFontName: String = "Helvetica" + public static var headerDayFontSize: CGFloat = 14.0 //Common public static var cellShape = CellShapeOptions.bevel(4.0) diff --git a/KDCalendar/CalendarView/CalendarView.swift b/KDCalendar/CalendarView/CalendarView.swift index 8b528c3..8d68643 100644 --- a/KDCalendar/CalendarView/CalendarView.swift +++ b/KDCalendar/CalendarView/CalendarView.swift @@ -118,6 +118,17 @@ public class CalendarView: UIView { return calFlowLayout } +// var startOfMonth = { +// let startDate = dataSource?.startDate() +// +// var firstDayOfStartMonthComponents = self.calendar.dateComponents([.era, .year, .month], from: startDate) +// firstDayOfStartMonthComponents.day = 1 +// +// let firstDayOfStartMonthDate = self.calendar.date(from: firstDayOfStartMonthComponents)! +// +// self.startOfMonthCache = firstDayOfStartMonthDate +// } + // MARK: - public public var displayDate: Date? @@ -329,8 +340,10 @@ extension CalendarView { function: - scroll calendar at date (month/year) passed as parameter. */ public func setDisplayDate(_ date: Date, animated: Bool = false) { - - guard (date >= startDateCache) && (date <= endDateCache) else { return } + print("startOfMonthCache = \(startOfMonthCache)") + print("endDateCache = \(endDateCache)") + guard (date >= startOfMonthCache) && (date <= endDateCache) else { return } + print("in range") self.collectionView.setContentOffset(self.scrollViewOffset(for: date), animated: animated) self.displayDateOnHeader(date) } @@ -372,6 +385,21 @@ extension CalendarView { goToMonthWithOffet(1) } + public func isLastMonth() -> Bool { + var dateComponents = DateComponents() + dateComponents.month = 1 + print("isLastMonth") + guard let displayDate = self.displayDate else { return true } + print("has display date") + guard let newDate = self.calendar.date(byAdding: dateComponents, to: displayDate) else { return true } + print("able to test next month") + if newDate <= endDateCache { + return false + } else { + return true + } + } + /* method: - goToPreviousMonth function: - scroll the calendar by one month in the past @@ -380,6 +408,18 @@ extension CalendarView { goToMonthWithOffet(-1) } + public func isFirstMonth() -> Bool { + var dateComponents = DateComponents() + dateComponents.month = -1 + guard let displayDate = self.displayDate else { return true } + guard let newDate = self.calendar.date(byAdding: dateComponents, to: displayDate) else { return true } + if newDate >= startOfMonthCache { + return false + } else { + return true + } + } + public func loadEvents(onComplete: ((Error?) -> Void)? = nil) { EventsManager.load(from: self.startDateCache, to: self.endDateCache) { // (events:[CalendarEvent]?) in From 5905eb07d6f888a1b1cc94719d5a38fb014f1f02 Mon Sep 17 00:00:00 2001 From: minimusic Date: Mon, 17 Dec 2018 14:03:03 -0800 Subject: [PATCH 4/5] debug and cleanup --- KDCalendar/CalendarView/CalendarDayCell.swift | 1 - KDCalendar/CalendarView/CalendarView+Delegate.swift | 9 ++++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/KDCalendar/CalendarView/CalendarDayCell.swift b/KDCalendar/CalendarView/CalendarDayCell.swift index 3fdc6cd..3c62a94 100644 --- a/KDCalendar/CalendarView/CalendarDayCell.swift +++ b/KDCalendar/CalendarView/CalendarDayCell.swift @@ -70,7 +70,6 @@ open class CalendarDayCell: UICollectionViewCell { var isBlackout: Bool = false { didSet { - if self.isToday { return } switch isBlackout { case true: self.textLabel.textColor = CalendarView.Style.cellTextColorBlackout diff --git a/KDCalendar/CalendarView/CalendarView+Delegate.swift b/KDCalendar/CalendarView/CalendarView+Delegate.swift index 9f36c97..7e23b46 100644 --- a/KDCalendar/CalendarView/CalendarView+Delegate.swift +++ b/KDCalendar/CalendarView/CalendarView+Delegate.swift @@ -32,11 +32,10 @@ extension CalendarView: UICollectionViewDelegateFlowLayout { guard let date = self.dateFromIndexPath(indexPath) else { return } if let index = selectedIndexPaths.index(of: indexPath) { - - delegate?.calendar(self, didDeselectDate: date) - - selectedIndexPaths.remove(at: index) - selectedDates.remove(at: index) + // We want to prevent deselecting ship date +// delegate?.calendar(self, didDeselectDate: date) +// selectedIndexPaths.remove(at: index) +// selectedDates.remove(at: index) } else { From 843dae69c9b0b887028c099da04bd2bbb7b2e26f Mon Sep 17 00:00:00 2001 From: minimusic Date: Tue, 18 Dec 2018 11:43:05 -0800 Subject: [PATCH 5/5] remove stray prints/comments --- KDCalendar/CalendarView/CalendarView.swift | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/KDCalendar/CalendarView/CalendarView.swift b/KDCalendar/CalendarView/CalendarView.swift index 8d68643..7f6750c 100644 --- a/KDCalendar/CalendarView/CalendarView.swift +++ b/KDCalendar/CalendarView/CalendarView.swift @@ -118,17 +118,6 @@ public class CalendarView: UIView { return calFlowLayout } -// var startOfMonth = { -// let startDate = dataSource?.startDate() -// -// var firstDayOfStartMonthComponents = self.calendar.dateComponents([.era, .year, .month], from: startDate) -// firstDayOfStartMonthComponents.day = 1 -// -// let firstDayOfStartMonthDate = self.calendar.date(from: firstDayOfStartMonthComponents)! -// -// self.startOfMonthCache = firstDayOfStartMonthDate -// } - // MARK: - public public var displayDate: Date? @@ -340,10 +329,7 @@ extension CalendarView { function: - scroll calendar at date (month/year) passed as parameter. */ public func setDisplayDate(_ date: Date, animated: Bool = false) { - print("startOfMonthCache = \(startOfMonthCache)") - print("endDateCache = \(endDateCache)") guard (date >= startOfMonthCache) && (date <= endDateCache) else { return } - print("in range") self.collectionView.setContentOffset(self.scrollViewOffset(for: date), animated: animated) self.displayDateOnHeader(date) } @@ -388,11 +374,8 @@ extension CalendarView { public func isLastMonth() -> Bool { var dateComponents = DateComponents() dateComponents.month = 1 - print("isLastMonth") guard let displayDate = self.displayDate else { return true } - print("has display date") guard let newDate = self.calendar.date(byAdding: dateComponents, to: displayDate) else { return true } - print("able to test next month") if newDate <= endDateCache { return false } else {