-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJobsTableViewController.swift
178 lines (142 loc) · 6.14 KB
/
JobsTableViewController.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
//
// JobsTableViewController.swift
// For Hire
//
// Created by Christian Ayscue on 2/11/15.
// Copyright (c) 2015 coayscue. All rights reserved.
//
import UIKit
import CoreLocation
var selectedJob: PFObject? = nil
var jobsArray: [PFObject] = []
class JobsTableViewController: UITableViewController, CLLocationManagerDelegate {
var locManager = CLLocationManager()
var refresher = UIRefreshControl()
var loadingLocView = UIImageView()
var userLocation = CLLocation()
var spinner = UIActivityIndicatorView()
var tapGesture = UITapGestureRecognizer()
var tapGestureAdded = false
@IBAction func showSideMenu(sender: AnyObject) {
self.revealViewController().revealToggle(self)
//if there is no gesture recognizer for view click when slid out, add one
if tapGestureAdded
{
self.view.removeGestureRecognizer(tapGesture)
tapGestureAdded = false
}else{
self.view.addGestureRecognizer(tapGesture)
tapGestureAdded = true
}
//self.navigationController?.popViewControllerAnimated(true)
}
override func viewDidLoad() {
super.viewDidLoad()
tapGesture = UITapGestureRecognizer(target: self, action: "hideMenu")
navigationController?.navigationBar.tintColor = UIColor.cyanColor()
self.tableView.backgroundColor = UIColor.grayColor()
//creates a refresher
refresher.addTarget(self, action: "refreshData", forControlEvents:UIControlEvents.ValueChanged)
self.tableView.addSubview(refresher)
//get current location
locManager.delegate = self
locManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
if locManager.respondsToSelector("requestWhenInUseAuthorization") {
locManager.requestWhenInUseAuthorization()
}
locManager.startUpdatingLocation()
//scales in loadingWarning
loadingLocView.frame = CGRectMake(self.view.frame.width/2, self.view.frame.height/2-35, 0, 0)
self.navigationController?.navigationBar.addSubview(loadingLocView)
// //allows a swipe gesture to show side menu
// var revealViewController = self.revealViewController
// if ( revealViewController != nil )
// {
// self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
//
// }
}
func hideMenu(){
self.revealViewController().revealToggle(self)
//if there is no gesture recognizer, add one
self.view.removeGestureRecognizer(tapGesture)
tapGestureAdded = false
}
func refreshData(){
println("refreshing")
if userLocation.coordinate.latitude != 0{
//create a query of jobs within 2 miles of user's location
var query = PFQuery(className: "Job")
let curLocation = userLocation
var geoPoint = PFGeoPoint(location: curLocation)
query.whereKey("Location", nearGeoPoint: geoPoint, withinMiles: 2)
query.whereKey("Active", containsString: "true")
var error = NSError()
query.findObjectsInBackgroundWithBlock { (jobs, error) -> Void in
//for every job in the list of jobs returned,
if jobs != nil && error == nil{
jobsArray = []
for job in jobs!{
jobsArray.append(job as! PFObject)
}
}
self.tableView.reloadData()
if !self.refresher.refreshing{
}else{
self.refresher.endRefreshing()
}
}
}
}
//sets user's location
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
userLocation = locations[0] as! CLLocation
if userLocation.coordinate.latitude != 0{
refreshData()
manager.stopUpdatingLocation()
spinner.stopAnimating()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return jobsArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Job Cell", forIndexPath: indexPath) as! UITableViewCell
var job = jobsArray[indexPath.row]
cell.backgroundColor = UIColor.grayColor()
//set the detail text label to hourly pay and number of hours
var pay = job["Pay"] as! String
//var hours = job["Hours"] as! String
// if (job["Pay_Type"] as! String == "Hourly_Pay"){
// cell.detailTextLabel?.text = " \(pay) per hour - \(hours) hours"
// }else{
cell.detailTextLabel?.text = "\(pay)"
cell.detailTextLabel?.textColor = UIColor.whiteColor()
// }
//set the text label to the job name
cell.textLabel?.text = job["Job_Name"] as? String
cell.textLabel?.frame.origin.y -= 20
cell.textLabel?.textColor = UIColor.whiteColor()
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedJob = jobsArray[indexPath.row]
self.performSegueWithIdentifier("showDetails", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetails"{
var viewController = segue.destinationViewController as! JobDetailsTableViewController
viewController.userLocation = self.userLocation
}
}
// override func viewDidAppear(animated: Bool) {
// self.refresher.beginRefreshing()
// }
}