Skip to content
Snippets Groups Projects
Commit 0a63bb56 authored by dmz39's avatar dmz39
Browse files

Added Edit Event Screen and populated table view

parent 2c6092a1
Branches
No related tags found
No related merge requests found
......@@ -10,14 +10,62 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "MoreFreeTime/ScheduleControllerViewController.swift"
timestampString = "565120761.112235"
timestampString = "565197303.385677"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "159"
endingLineNumber = "159"
startingLineNumber = "163"
endingLineNumber = "163"
landmarkName = "insertEvent(e:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "MoreFreeTime/ScheduleControllerViewController.swift"
timestampString = "565197303.385789"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "248"
endingLineNumber = "248"
landmarkName = "tableView(_:didSelectRowAt:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "MoreFreeTime/ScheduleControllerViewController.swift"
timestampString = "565197303.385855"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "241"
endingLineNumber = "241"
landmarkName = "tableView(_:didSelectRowAt:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "MoreFreeTime/ScheduleControllerViewController.swift"
timestampString = "565197303.385916"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "249"
endingLineNumber = "249"
landmarkName = "tableView(_:didSelectRowAt:)"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>
......@@ -10,6 +10,7 @@ import UIKit
class AddEventViewController: UIViewController {
@IBOutlet weak var pageTitle: UILabel!
@IBOutlet weak var eventTitleLabel: UITextField!
@IBOutlet weak var eventLocationLabel: UITextField!
@IBOutlet weak var eventDescriptionText: UITextView!
......@@ -22,28 +23,33 @@ class AddEventViewController: UIViewController {
var observerStart : NSObjectProtocol?
var observerEnd : NSObjectProtocol?
var startDateTime : Date = Date()
var endDateTime : Date = Date()
var edit : Bool! = false
var eventForEdit : Event!
var defaultStartTime : String {
let formatter = DateFormatter()
formatter.timeStyle = .short
let date = Date()
return formatter.string(from: date)
return formatter.string(from: startDateTime)
}
var defaultEndTime : String {
let formatter = DateFormatter()
formatter.timeStyle = .short
let date = Date().addingTimeInterval(3600)
return formatter.string(from: date)
return formatter.string(from: endDateTime)
}
var defaultDate : String {
let formatter = DateFormatter()
formatter.dateStyle = .medium
return formatter.string(from: Date())
return formatter.string(from: startDateTime)
}
override func viewDidLoad() {
super.viewDidLoad()
self.endDateTime = endDateTime.addingTimeInterval(3600)
self.eventStartTime.text = self.defaultStartTime
self.eventEndTime.text = self.defaultEndTime
self.eventEndDate.text = self.defaultDate
......@@ -51,29 +57,77 @@ class AddEventViewController: UIViewController {
observerStart = NotificationCenter.default.addObserver(forName: .saveStartDateTime, object: nil, queue: OperationQueue.main) {
(notification) in let dateVc = notification.object as! DatePopupViewController
self.eventStartTime.text = dateVc.formattedTime
self.eventStartDate.text = dateVc.formattedDate
self.eventEndDate.text = dateVc.formattedDate
self.startDateTime = dateVc.date
self.endDateTime = dateVc.date
self.setStartTimes()
}
observerEnd = NotificationCenter.default.addObserver(forName: .saveEndDateTime, object: nil, queue: OperationQueue.main) {
(notification) in let dateVc = notification.object as! DatePopupViewController
self.eventEndTime.text = dateVc.formattedTime
self.eventEndDate.text = dateVc.formattedDate
self.endDateTime = dateVc.date
self.setEndTimes()
}
if edit {
self.pageTitle.text = "Edit Event"
self.eventTitleLabel.text = self.eventForEdit.title
self.eventLocationLabel.text = self.eventForEdit.location
self.eventStartDate.text = self.eventForEdit.startDate
self.eventStartTime.text = self.eventForEdit.startTime
self.eventEndDate.text = self.eventForEdit.endDate
self.eventEndTime.text = self.eventForEdit.endTime
self.eventDescriptionText.text = self.eventForEdit.description
//populate fields with data
}
// Do any additional setup after loading the view.
}
func formatThisTime(date : Date) -> String {
let formatter = DateFormatter()
formatter.timeStyle = .short
return formatter.string(from: date)
}
func formatShortDate(date : Date) -> String {
let formatter = DateFormatter()
formatter.dateStyle = .medium
return formatter.string(from: date)
}
func setStartTimes() {
self.eventStartTime.text = self.defaultStartTime
self.eventStartDate.text = self.formatShortDate(date: self.startDateTime)
self.eventEndDate.text = self.formatShortDate(date: self.startDateTime)
let endTime : Date = self.startDateTime.addingTimeInterval(3600)
self.eventEndTime.text = self.formatThisTime(date: endTime)
}
func setEndTimes() {
self.eventEndTime.text = self.formatThisTime(date: self.endDateTime)
self.eventEndDate.text = self.formatShortDate(date: self.endDateTime)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toStartDatePopupView" {
let popup = segue.destination as! DatePopupViewController
popup.isStart = true
popup.currentDate = startDateTime
} else if segue.identifier == "toEndDatePopupView" {
let popup = segue.destination as! DatePopupViewController
popup.isStart = false
popup.currentDate = endDateTime
}
}
@IBAction func clickSave(_ sender: Any) {
if edit {
print(eventForEdit)
//add editing event here
} else {
print("Adding New Event")
let event = Event(title: self.eventTitleLabel.text ?? "(No Title)", startDate: self.eventStartDate.text!, startTime: self.eventStartTime.text!, endDate: self.eventEndDate.text!, endTime: self.eventEndTime.text!, location: self.eventLocationLabel.text ?? "No Location", description: self.eventDescriptionText.text)
NotificationCenter.default.post(name: .saveNewEvent, object: event)
}
if let observerStart = observerStart {
NotificationCenter.default.removeObserver(observerStart)
}
......
......@@ -15,6 +15,7 @@ class DatePopupViewController: UIViewController {
@IBOutlet weak var datePicker: UIDatePicker!
var isStart: Bool! = false
var currentDate : Date = Date()
var date: Date {
return datePicker.date
......@@ -55,10 +56,14 @@ class DatePopupViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.datePicker.date = currentDate
// Do any additional setup after loading the view.
}
func setDate(currentDate : Date) {
self.datePicker.date = currentDate
}
@IBAction func clickSave(_ sender: Any) {
if (isStart) {
NotificationCenter.default.post(name: Notification.Name.saveStartDateTime, object: self)
......
......@@ -15,7 +15,17 @@ class EventSingleDayCell: UITableViewCell {
@IBOutlet weak var eventLocation: UILabel!
@IBOutlet weak var eventStartTime: UILabel!
@IBOutlet weak var eventEndTime: UILabel!
@IBOutlet weak var editThisEvent: UIButton!
var housedEvent : Event!
func setEvent(event : Event) {
self.housedEvent = event
self.eventName.text = event.title
self.eventLocation.text = event.location
self.eventStartTime.text = event.startTime
self.eventEndTime.text = event.endTime
}
......
......@@ -24,33 +24,31 @@ class ScheduleControllerViewController: UIViewController/*, UITableViewDelegate,
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var dateLabel: UILabel!
var dateObserver : NSObjectProtocol?
var newEventObserver : NSObjectProtocol?
var currentDate : Date = Date()
var currentShortDate : String?
var newEvent : Event?
var events : [Event] = []
var formattedDate: String {
get {
let formatter = DateFormatter()
formatter.dateStyle = .long
return formatter.string(from: Date())
return formatter.string(from: self.currentDate)
}
}
var formattedShortDate : String {
let formatter = DateFormatter()
formatter.dateStyle = .medium
return formatter.string(from: Date())
return formatter.string(from: self.currentDate)
}
var currentDate : String?
var currentShortDate : String?
var newEvent : Event?
var events : [Event] = []
@IBOutlet weak var eventsViewer: UIView!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// This will open and set the global database
......@@ -62,25 +60,28 @@ class ScheduleControllerViewController: UIViewController/*, UITableViewDelegate,
} catch {
print(error)
}
addObservers()
deleteTable()
//deleteTable()
createTable()
getTodaysEvents()
currentDate = formattedDate
currentShortDate = formattedShortDate
dateLabel.text = currentDate
//Pull all events from Database that correspond to date
dateLabel.text = formattedDate
//Pull all events from Database that correspond to date
tableView.delegate = self
tableView.dataSource = self
getTodaysEvents()
}
func addObservers() {
dateObserver = NotificationCenter.default.addObserver(forName: .saveStartDateTime, object: nil, queue: OperationQueue.main) {
(notification) in let dateVc = notification.object as! DatePopupViewController
self.currentDate = dateVc.date
self.dateLabel.text = dateVc.formattedDateLong
self.currentDate = dateVc.formattedDateLong
self.currentShortDate = dateVc.formattedDate
self.getTodaysEvents()
//print(self.events)
//When the date changes, also clear the events and populate with the current dates events
}
newEventObserver = NotificationCenter.default.addObserver(forName: .saveNewEvent, object: nil, queue: OperationQueue.main) {
......@@ -88,10 +89,11 @@ class ScheduleControllerViewController: UIViewController/*, UITableViewDelegate,
self.insertEvent(e: newEvent)
print("Events List:")
self.getTodaysEvents()
print(self.events[0].getTimeInMinutes())
self.sortEvents()
print("OBSERVER: event added")
//print(self.events)
}
//print("added observer")
print("added observer")
}
func getTodaysEvents() {
......@@ -108,6 +110,8 @@ class ScheduleControllerViewController: UIViewController/*, UITableViewDelegate,
print(error)
}
self.events = todaysEvents
self.sortEvents()
self.tableView.reloadData()
}
func sortEvents() {
......@@ -203,6 +207,7 @@ class ScheduleControllerViewController: UIViewController/*, UITableViewDelegate,
if segue.identifier == "toCurrentDatePopupView" {
let popup = segue.destination as! DatePopupViewController
popup.isStart = true
popup.currentDate = self.currentDate
}
}
......@@ -214,6 +219,33 @@ class ScheduleControllerViewController: UIViewController/*, UITableViewDelegate,
}
if let newEventObserver = newEventObserver {
NotificationCenter.default.removeObserver(newEventObserver)
print("Event Observer Deallocated")
}
}
}
extension ScheduleControllerViewController : UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return events.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let event = events[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "EventSingleDayCell") as! EventSingleDayCell
cell.setEvent(event: event)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Clicked Cell")
let vc = UIStoryboard(name: "EventsController", bundle: nil).instantiateViewController(withIdentifier: "AddEventViewController") as! AddEventViewController
vc.edit = true
vc.eventForEdit = events[indexPath.row]
let navigationController = UINavigationController(rootViewController: vc)
self.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
navigationController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
self.present(navigationController, animated: true, completion: nil)
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment