Last active
July 24, 2017 23:19
-
-
Save sstadelman/2f2e900ff435424f9a01fee95abf1a38 to your computer and use it in GitHub Desktop.
PowerHourDemo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// TasksListReportFloorplanExample.swift | |
// PowerHour | |
// | |
// Created by Stadelman, Stan on 7/11/17. | |
// Copyright © 2017 sstadelman. All rights reserved. | |
// | |
import UIKit | |
class TasksListReportFloorplanExample: UITableViewController { | |
// var tasks: [ListReportFPData.Task] = ListReportFPData.tasks | |
// | |
// var searchController: FUISearchController! | |
// var filteredTasks: [ListReportFPData.Task] = [] | |
// var isFiltered: Bool = false | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
// 1. PowerHourRegisterCellReuseIdAndAutosizing | |
// 3. PowerHourSearchController | |
// 5. PowerHourTabBarItems | |
} | |
// 2. PowerHourUITableViewDataSource | |
// 4. PowerHourUISearchResultsUpdating | |
} | |
extension TasksListReportFloorplanExample { | |
// MARK: Handler for UIToolbar Button Item Actions | |
func addTask() { | |
// add task here | |
} | |
func filterTasks() { | |
// set filter mode here | |
} | |
func setEditMode() { | |
self.tableView.setEditing(!self.tableView.isEditing, animated: true) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
self.title = "Active Tasks (\(self.tasks.count))" | |
self.tableView.register(FUIObjectTableViewCell.self, forCellReuseIdentifier: FUIObjectTableViewCell.reuseIdentifier) | |
self.tableView.estimatedRowHeight = 120 | |
self.tableView.rowHeight = UITableViewAutomaticDimension | |
// 3. PowerHourSearchController | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
searchController = FUISearchController(searchResultsController: nil) | |
searchController.searchResultsUpdater = self | |
self.tableView.tableHeaderView = searchController.searchBar | |
// 7. PowerHourTabBarItems | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(setEditMode)) | |
let addItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTask)) | |
let filterItem = UIBarButtonItem(title: "Filter", style: .plain, target: self, action: #selector(filterTasks)) | |
let spacing = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) | |
self.navigationController?.isToolbarHidden = false | |
self.toolbarItems = [filterItem, spacing, addItem] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MARK: UISearchResultsUpdating | |
func updateSearchResults(for searchController: UISearchController) { | |
guard let searchString = searchController.searchBar.text, !searchString.isEmpty else { | |
self.isFiltered = false | |
self.filteredTasks.removeAll() | |
self.tableView.reloadData() | |
return | |
} | |
self.isFiltered = true | |
self.filteredTasks = self.tasks.filter( { return $0.title.contains(searchString) }) | |
self.tableView.reloadData() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MARK: - Table view data source | |
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |
return tasks.count | |
} | |
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { | |
let task = tasks[indexPath.row] | |
let cell = tableView.dequeueReusableCell(withIdentifier: FUIObjectTableViewCell.reuseIdentifier, | |
for: indexPath) as! FUIObjectTableViewCell | |
cell.headlineText = task.title | |
cell.subheadlineText = task.statusSummary | |
cell.detailImage = task.primaryImage | |
cell.detailImageView.isCircular = true | |
cell.footnoteText = { | |
switch task.onTime { | |
case Int.min..<0: | |
return "Overdue by \(abs(task.onTime)) day" + (abs(task.onTime) > 1 ? "s" : "") | |
case 0: | |
return "due today" | |
default: | |
return "Due in \(task.onTime) day" + (task.onTime > 1 ? "s" : "") | |
} | |
}() | |
cell.statusImage = #imageLiteral(resourceName: "flag-off_24px").withRenderingMode(.alwaysTemplate) | |
cell.statusImageView.tintColor = task.onTime < 1 ? UIColor.preferredFioriColor(forStyle: .negative) : UIColor.preferredFioriColor(forStyle: .positive) | |
cell.accessoryType = .disclosureIndicator | |
return cell | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment