Skip to content

Instantly share code, notes, and snippets.

@zaifz
Created July 27, 2017 07:31
Show Gist options
  • Save zaifz/2eba363432f56629a017d04ce8e973a7 to your computer and use it in GitHub Desktop.
Save zaifz/2eba363432f56629a017d04ce8e973a7 to your computer and use it in GitHub Desktop.
func displayAssignMents(){
//createTodoBtn.isHidden = true
// check whether you are in DayView Or Two Week View
if isDayView {
dayCollectionView.isHidden = false
           dayCollectionView.reloadData()
_______
if let theCount = dayScheduleModel?.allSchedules().count, theCount > 0 {
dayCollectionView.scrollToItem(at: IndexPath(item: theCount * 1000 / 2, section: 0), at: .centeredHorizontally, animated: false)
}
_______
           tableView.isHidden = true
todoEmptyInfoView.isHidden = true // ToDos Table
} else {
if(twoWeekCollectionView != nil){
twoWeekCollectionView.reloadData()
twoWeekCollectionView.isHidden = false
twoWeeksTableView.isHidden = true // ToDos Table
}
}
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int{
var itemsCount = 0
selectedTab = 1
itemsCount = dayScheduleModel?.allSchedules().count ?? 0
// switch selectedTab {
// case 0: // AssignMents
// itemsCount = dayScheduleModel != nil ? (dayScheduleModel?.assignments().count)! : 0
// break
// case 1: // EVENTS
// itemsCount = dayScheduleModel != nil ? (dayScheduleModel?.events().count)! : 0
// break
// default:
// break
// }
return itemsCount * 1000
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
switch selectedTab {
case 0:
identifier = "assignmentCollectionVewCell"
break
case 1:
identifier = "eventCollectionVewCell"
break
default:break
}
let arrayCount = dayScheduleModel?.allSchedules().count ?? 0
let cell:UICollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath)
if cell.isKind(of: AssignmentCollectionViewCell.self){
let assignmentCell = (cell as? AssignmentCollectionViewCell)
// let assignMent = (dayScheduleModel?.assignments()[indexPath.row])! as Schedule
if indexPath.row % arrayCount < dayScheduleModel?.assignments().count {
let assignMent = (dayScheduleModel?.allSchedules()[indexPath.row % arrayCount])! as Schedule
// set all the values
assignmentCell!.assignmentCardView.color = getColorForType(assignMent.eventType, circle: assignMent.planStatus!)[0]
if !self.anyOtherAssnmtInDoneState {
assignmentCell!.assignmentCardView.timeBtn.setImage(UIImage(named:""), for: UIControlState())
assignmentCell!.assignmentCardView.timeBtn.setTitle("", for: UIControlState())
}
assignmentCell!.assignmentCardView.name.text = "Assignment"
assignmentCell?.assignmentCardView.name.textColor = UIColor.gray
assignmentCell?.assignmentCardView.coursename.text = assignMent.eventName
let date = getDateFromString(assignMent.date, format: "dd/MM/yyyy")
assignmentCell?.assignmentCardView.date.text = getStringFromDate(date!, format: "dd MMM,yyyy")
let due = daysBetweenDates(getDateFromString(getStringFromDate(Date(),format:"dd/MM/yyyy"),format:"dd/MM/yyyy")!, endDate: getDateFromString(assignMent.date, format: "dd/MM/yyyy")!)
if (due==0) {
assignmentCell?.assignmentCardView.dueLabel.text = "Due Today"
} else {
assignmentCell?.assignmentCardView.dueLabel.text = "Due in \(String(due)) days"
}
assignmentCell?.assignmentCardView.overview.text = assignMent.description
assignmentCell?.assignmentCardView.overview.textColor = UIColor.gray
assignmentCell?.assignmentCardView.timeBtn.tag = indexPath.row
assignmentCell?.assignmentCardView.timeBtn.addTarget(self, action: #selector(SmartSchedularViewController.findFreeSlotsAsnmt(_:)), for: .touchUpInside)
assignmentCell?.assignmentCardView.studyGroupBtn.tag = indexPath.row
assignmentCell?.assignmentCardView.studyGroupBtn.addTarget(self, action: #selector(SmartSchedularViewController.displayStudyGroups(_:)), for: .touchUpInside)
}
} else if cell.isKind(of: EventCollectionViewCell.self) {
if indexPath.row % arrayCount >= dayScheduleModel?.assignments().count ?? 0 && indexPath.row % arrayCount < dayScheduleModel?.events().count {
let eventCell = (cell as? EventCollectionViewCell)
// let event = (dayScheduleModel?.events()[indexPath.row])! as Schedule
let event = (dayScheduleModel?.allSchedules()[indexPath.row % arrayCount])! as Schedule
// print(indexPath.row, event.eventType,getColorForType(event.eventType, circle: 0)[0])
// set all the values
eventCell?.eventCardView.color = getColorForType(event.eventType, circle: event.planStatus!)[0]
eventCell?.eventCardView.layoutSubviews()
eventCell!.eventCardView.coursename.text = event.eventName
if(ScheduleType.GROUP_EVENT.rawValue == event.eventType){
eventCell!.eventCardView.overview.text = ""
}else{
eventCell!.eventCardView.overview.text = event.description
}
eventCell?.eventCardView.timeBtn.tag = indexPath.row
eventCell?.eventCardView.timeBtn.addTarget(self, action: #selector(SmartSchedularViewController.showCoursesButtonAction(_:)), for: .touchUpInside)
eventCell?.eventCardView.timeBtn.isHidden = true
// Set Event Name
switch event.eventType {
case ScheduleType.CLASS.rawValue:
eventCell?.setCardText("Class")
eventCell?.eventCardView.timeBtn.isHidden = false
break
case ScheduleType.NATIVEEVENT.rawValue:
eventCell?.setCardText("Calendar")
break
case ScheduleType.GROUP_EVENT.rawValue:
eventCell?.setCardText("Group Event")
break
case ScheduleType.EVENT.rawValue:
eventCell?.setCardText("Suggested Event")
break
case ScheduleType.ASSIGNMENT_EVENT.rawValue:
eventCell?.setCardText("Assignment Event")
break
case ScheduleType.LAB.rawValue:
eventCell?.setCardText("Lab")
break
case ScheduleType.CRC_EVENT.rawValue:
eventCell?.setCardText("Suggested Event")
break
default:
eventCell?.setCardText(event.eventType)
break
}
if event.startHour == 0 && event.startMinit == 0 && event.endHour == 0 && event.endMinit == 0 {
if event.eventType == ScheduleType.CLASS.rawValue {
eventCell?.eventCardView.date.text = "Set Time for Course"
}
} else {
eventCell?.eventCardView.date.text = "\(convert24HrTo12Hr(event.startTime)) - \(convert24HrTo12Hr(event.endTime))"
}
}
}
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
switch selectedTab {
case 0:
identifier = "assignmentCollectionVewCell"
break
case 1:
identifier = "eventCollectionVewCell"
break
default:break
}
let arrayCount = dayScheduleModel?.allSchedules().count ?? 0
if let _ = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as? AssignmentCollectionViewCell {
// let assignMent = (dayScheduleModel?.assignments()[indexPath.row])! as Schedule
if indexPath.row % arrayCount < dayScheduleModel?.assignments().count {
let assignMent = (dayScheduleModel?.allSchedules()[indexPath.row % arrayCount])! as Schedule
let assignmentController = AssignmentCardDetailsController.instantiateFromAppStoryBoard(appStoryBoard: .smartScheduler)
assignmentController.assignMent = assignMent
assignmentController.smartSchedularController = self
assignmentController.index = indexPath.row
assignmentController.modalTransitionStyle = .coverVertical
assignmentController.modalPresentationStyle = UIModalPresentationStyle.overFullScreen
self.present(assignmentController, animated: true, completion: nil)
}
} else if let _ = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as? EventCollectionViewCell{
if indexPath.row % arrayCount >= dayScheduleModel?.assignments().count ?? 0 && indexPath.row % arrayCount < dayScheduleModel?.events().count {
// let event = (dayScheduleModel?.events()[indexPath.row])! as Schedule
let event = (dayScheduleModel?.allSchedules()[indexPath.row % arrayCount])! as Schedule
let eventController = EventCardDetailsController.instantiateFromAppStoryBoard(appStoryBoard: .smartScheduler)
eventController.event = event
eventController.smartSchedularController = self
eventController.modalPresentationStyle = UIModalPresentationStyle.overFullScreen
self.present(eventController, animated: true, completion: nil)
}
}
}
____________________________
____________________________
func displaySelectedSchedule(_ eventType:String,eventId:Int){
// toggleTabs(getTabNoFromEventType(eventType))
for s in 0..<dayCollectionView.numberOfSections {
for i in 0..<dayCollectionView.numberOfItems(inSection: s) {
let indexPath = IndexPath(item: i, section: s)
switch eventType {
case ScheduleType.ASSIGNMENT.rawValue,ScheduleType.GROUP_ASSIGNMENT.rawValue:
if indexPath.row < dayScheduleModel?.assignments().count {
let assignment = (dayScheduleModel?.allSchedules()[i])! as Schedule
// let assignment = (dayScheduleModel?.assignments()[i])! as Schedule
if assignment.eventId == eventId {
dayCollectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionViewScrollPosition.centeredHorizontally)
}
}
break
case ScheduleType.CLASS.rawValue,ScheduleType.ASSIGNMENT_EVENT.rawValue,ScheduleType.EVENT.rawValue,ScheduleType.NATIVEEVENT.rawValue,ScheduleType.GROUP_EVENT.rawValue,ScheduleType.LAB.rawValue,ScheduleType.CRC_EVENT.rawValue:
if indexPath.row >= dayScheduleModel?.assignments().count ?? 0 && indexPath.row < dayScheduleModel?.events().count {
let event = (dayScheduleModel?.allSchedules()[i])! as Schedule
// let assignment = (dayScheduleModel?.events()[i])! as Schedule
if event.eventId == eventId{
dayCollectionView.selectItem(at: indexPath, animated: true, scrollPosition: UICollectionViewScrollPosition.centeredHorizontally)
}
}
break
case ScheduleType.OVERLAP.rawValue:
break
default:
break
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment