Active and draft filter implemented

fixed ordering of listings
This commit is contained in:
Okechi Onyeje 2017-01-03 08:33:54 -05:00
parent 181ea663c3
commit 782e2ec592
5 changed files with 226 additions and 102 deletions

View File

@ -10,11 +10,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "504912890.797569"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "281"
endingLineNumber = "281"
startingLineNumber = "396"
endingLineNumber = "396"
landmarkName = "tableView(_:cellForRowAtIndexPath:)"
landmarkType = "5">
</BreakpointContent>
@ -42,11 +42,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "504910196.477146"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "92"
endingLineNumber = "92"
startingLineNumber = "106"
endingLineNumber = "106"
landmarkName = "activeHistorSegSwitch(_:)"
landmarkType = "5">
</BreakpointContent>
@ -280,7 +280,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift"
timestampString = "505105059.906101"
timestampString = "505143090.189899"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
@ -295,7 +295,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift"
timestampString = "505105059.906318"
timestampString = "505143090.190043"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
@ -310,7 +310,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift"
timestampString = "505105059.906451"
timestampString = "505143090.190152"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
@ -325,7 +325,7 @@
moduleName = "Vendoo"
usesParentBreakpointCondition = "Yes"
urlString = "file:///Users/okechi/Documents/iOs%20Practice/Vendoo/Vendoo_bb/Vendoo/Vendoo/ExternalWebViewController.swift"
timestampString = "505105059.906581"
timestampString = "505143090.190242"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "32"
@ -358,11 +358,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "504912890.797569"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "224"
endingLineNumber = "224"
startingLineNumber = "253"
endingLineNumber = "253"
landmarkName = "numberOfSectionsInTableView(_:)"
landmarkType = "5">
</BreakpointContent>
@ -374,11 +374,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "504912890.797569"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "409"
endingLineNumber = "409"
startingLineNumber = "493"
endingLineNumber = "493"
landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
landmarkType = "5">
</BreakpointContent>
@ -390,11 +390,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "504912890.797569"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "410"
endingLineNumber = "410"
startingLineNumber = "494"
endingLineNumber = "494"
landmarkName = "tableView(_:didSelectRowAtIndexPath:)"
landmarkType = "5">
</BreakpointContent>
@ -406,11 +406,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "504968542.456631"
timestampString = "505142560.542505"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "193"
endingLineNumber = "193"
startingLineNumber = "212"
endingLineNumber = "212"
landmarkName = "viewDidLoad()"
landmarkType = "5">
<Locations>
@ -454,11 +454,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "504968909.840568"
timestampString = "505142560.542505"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "194"
endingLineNumber = "194"
startingLineNumber = "214"
endingLineNumber = "214"
landmarkName = "viewDidLoad()"
landmarkType = "5">
<Locations>
@ -502,11 +502,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "504968963.93448"
timestampString = "505142560.542505"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "196"
endingLineNumber = "196"
startingLineNumber = "216"
endingLineNumber = "216"
landmarkName = "viewDidLoad()"
landmarkType = "5">
</BreakpointContent>
@ -518,11 +518,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "505104273.568652"
timestampString = "505142560.542505"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "146"
endingLineNumber = "146"
startingLineNumber = "149"
endingLineNumber = "149"
landmarkName = "viewDidLoad()"
landmarkType = "5">
</BreakpointContent>
@ -533,13 +533,29 @@
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/HomeViewController.swift"
timestampString = "505104913.804045"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "148"
endingLineNumber = "148"
landmarkName = "viewDidLoad()"
startingLineNumber = "107"
endingLineNumber = "107"
landmarkName = "activeHistorSegSwitch(_:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Vendoo/ItemTableViewController.swift"
timestampString = "505143089.818284"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "120"
endingLineNumber = "120"
landmarkName = "historyCurrentlyFilterSegSwitch(_:)"
landmarkType = "5">
</BreakpointContent>
</BreakpointProxy>

View File

@ -7,6 +7,7 @@
//
import UIKit
import Foundation
/// This class is resonsible for retrieving all listing information for the current user.
/// Acts as the tab bar controller for entire application.
@ -24,6 +25,7 @@ class HomeViewController: UITabBarController {
var userListings: [Listing] = []
var endedListings: [Listing] = []
var soldListings: [Listing] = []
var draftListings: [Listing] = []
//notification manager variables
var notificationsManager = ServiceNotificationManager()
@ -144,18 +146,34 @@ class HomeViewController: UITabBarController {
//if no Listing status found then the listing is either active or a draft
if listingInfo!["listingStatus"] == nil {
self.userListings.append(
Listing(
itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
if(((listingInfo!["isListingDraft"] as! Bool))){
self.draftListings.append(
Listing(
itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
}else{
self.userListings.append(
Listing(
itemTitle: (listingInfo!["listingTitle"] as? String)!,
itemCategory: listingInfo!["listingCategory"] as? String,
itemQuantity: (listingInfo!["listingQuantity"] as? String)!,
itemPrice: listingInfo!["listingPrice"] as? String,
itemDescription: listingInfo!["listingDescription"] as? String,
itemImages: listingImages,
isDraftListing: (listingInfo!["isListingDraft"] as? Bool)!,
itemKey: key,
networksSellingOn: (listingInfo!["networks"] as? Dictionary<String, Bool>)!
))
}
}
//create ended Listing objects
else if listingInfo!["listingStatus"] as? String == "Ended" {
@ -189,10 +207,12 @@ class HomeViewController: UITabBarController {
print(notificationStartTracker)
//once all listings have been retrieved and processed start retrieving possible notifications
if(notificationStartTracker == listingDict?.count){
self.userListings.sortInPlace({$0.title > $1.title})
self.endedListings.sortInPlace({$0.title > $1.title})
self.soldListings.sortInPlace({$0.title > $1.title})
self.userListings.sortInPlace({$0.title.lowercaseString < $1.title.lowercaseString})
self.draftListings.sortInPlace({$0.title.lowercaseString < $1.title.lowercaseString})
self.endedListings.sortInPlace({$0.title.lowercaseString < $1.title.lowercaseString})
self.soldListings.sortInPlace({$0.title.lowercaseString < $1.title.lowercaseString})
NSNotificationCenter.defaultCenter().postNotificationName("finished_fetching_listings", object: nil)
self.notificationsManager.setListings(self.userListings)
self.notificationsManager.startServicePolling()

View File

@ -21,7 +21,7 @@ class ItemTableViewController: UIViewController {
@IBOutlet weak var menuButton: UIBarButtonItem!
@IBOutlet weak var historyFilter: UISegmentedControl!
@IBOutlet weak var historyCurrentlyFilter: UISegmentedControl!
var loadingView: UIView!
@ -40,6 +40,19 @@ class ItemTableViewController: UIViewController {
//set delegates
self.itemTable.dataSource = self
self.itemTable.delegate = self
//History Segement
if(self.tableSegmentController.selectedSegmentIndex == 1){
self.historyCurrentlyFilter.selectedSegmentIndex = UISegmentedControlNoSegment
self.historyCurrentlyFilter.setTitle("Sold", forSegmentAtIndex: 0)
self.historyCurrentlyFilter.setTitle("Unsold", forSegmentAtIndex: 1)
//Active segment
}else{
self.historyCurrentlyFilter.selectedSegmentIndex = UISegmentedControlNoSegment
self.historyCurrentlyFilter.setTitle("Active", forSegmentAtIndex: 0)
self.historyCurrentlyFilter.setTitle("Draft", forSegmentAtIndex: 1)
}
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(stopIndicator), name: "finished_fetching_listings", object: nil)
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
@ -90,23 +103,20 @@ class ItemTableViewController: UIViewController {
// MARK: - IBAction
extension ItemTableViewController {
@IBAction func activeHistorSegSwitch(sender: UISegmentedControl) {
self.historyCurrentlyFilter.selectedSegmentIndex = UISegmentedControlNoSegment
self.itemTable.reloadData()
//History Segement
if(self.tableSegmentController.selectedSegmentIndex == 1){
self.historyFilter.enabled = true
self.historyFilter.userInteractionEnabled = true
self.historyFilter.hidden = false
self.historyCurrentlyFilter.setTitle("Sold", forSegmentAtIndex: 0)
self.historyCurrentlyFilter.setTitle("Unsold", forSegmentAtIndex: 1)
//Active segment
}else{
self.historyFilter.selectedSegmentIndex = UISegmentedControlNoSegment
self.historyFilter.enabled = false
self.historyFilter.userInteractionEnabled = false
self.historyFilter.hidden = true
self.historyCurrentlyFilter.setTitle("Active", forSegmentAtIndex: 0)
self.historyCurrentlyFilter.setTitle("Draft", forSegmentAtIndex: 1)
}
}
@IBAction func historyFilterSegSwitch(sender: UISegmentedControl) {
@IBAction func historyCurrentlyFilterSegSwitch(sender: UISegmentedControl) {
self.itemTable.reloadData()
}
@ -195,7 +205,7 @@ extension ItemTableViewController: UITableViewDataSource{
//if in the history segment
if(self.tableSegmentController.selectedSegmentIndex == 1){
//hides title of unsold section if Sold filter selected
if(self.historyFilter.selectedSegmentIndex == 0){
if(self.historyCurrentlyFilter.selectedSegmentIndex == 0){
if(section == 1){
return 0.0
}else{
@ -203,7 +213,7 @@ extension ItemTableViewController: UITableViewDataSource{
}
//hides title of sold section if Unsold filter selected
}else if(self.historyFilter.selectedSegmentIndex == 1){
}else if(self.historyCurrentlyFilter.selectedSegmentIndex == 1){
if(section == 0){
return 0.0
}else{
@ -215,14 +225,33 @@ extension ItemTableViewController: UITableViewDataSource{
return self.itemTable.sectionHeaderHeight
}
}else{
return self.itemTable.sectionHeaderHeight
//hides title of draft section if active filter selected
if(self.historyCurrentlyFilter.selectedSegmentIndex == 0){
if(section == 1){
return 0.0
}else{
return self.itemTable.sectionHeaderHeight
}
//hides title of active section if draft filter selected
}else if(self.historyCurrentlyFilter.selectedSegmentIndex == 1){
if(section == 0){
return 0.0
}else{
return self.itemTable.sectionHeaderHeight
}
//Shows both section titles
}else{
return self.itemTable.sectionHeaderHeight
}
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
//number of sections for active segment
if self.tableSegmentController.selectedSegmentIndex == 0 {
return 1
return 2
}
else {
return 2
@ -232,20 +261,41 @@ extension ItemTableViewController: UITableViewDataSource{
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//if in the active segment
if self.tableSegmentController.selectedSegmentIndex == 0 {
return ((self.tabBarController as? HomeViewController)?.userListings.count)!
//hides draft section cells if active filter selected
if(self.historyCurrentlyFilter.selectedSegmentIndex == 0){
if(section == 1){
return 0
}else{
return ((self.tabBarController as? HomeViewController)?.userListings.count)!
}
//hides active section cells if draft filter selected
}else if(self.historyCurrentlyFilter.selectedSegmentIndex == 1){
if(section == 0){
return 0
}else{
return ((self.tabBarController as? HomeViewController)?.draftListings.count)!
}
}else{
//shows both respective sections cells
if(section == 1){
return ((self.tabBarController as? HomeViewController)?.draftListings.count)!
}else{
return ((self.tabBarController as? HomeViewController)?.userListings.count)!
}
}
}
//if in the history segment
else {
//hides unsold section cells if Sold filter selected
if(self.historyFilter.selectedSegmentIndex == 0){
if(self.historyCurrentlyFilter.selectedSegmentIndex == 0){
if(section == 1){
return 0
}else{
return ((self.tabBarController as? HomeViewController)?.soldListings.count)!
}
//hides sold section cells if Unsold filter selected
}else if(self.historyFilter.selectedSegmentIndex == 1){
}else if(self.historyCurrentlyFilter.selectedSegmentIndex == 1){
if(section == 0){
return 0
}else{
@ -275,12 +325,43 @@ extension ItemTableViewController: UITableViewDataSource{
//Active and unpublished listings
if self.tableSegmentController.selectedSegmentIndex == 0 {
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back
cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price
//check if item is published
if((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].isDraft!){
//active lstings
if indexPath.section == 0 {
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row].images[0] //come back
cell.itemName.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].title
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.userListings[indexPath.row].price
cell.itemStatus.text = "Status: Active"
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){
cell.networks.hidden = true
}else{
cell.selectedNetworks = []
dispatch_async(dispatch_get_main_queue(), {
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){
cell.addNetwork("ebay_icon")
}
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){
cell.addNetwork("amazon_icon")
}
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){
cell.addNetwork("etsy_icon")
}
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){
cell.addNetwork("facebook_icon")
}
cell.networks.reloadData()
})
}
}else{
cell.itemImage.image = (self.tabBarController as? HomeViewController)?.draftListings[indexPath.row].images[0] //come back
cell.itemName.text = (self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].title
cell.itemPrice.text = (self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].price
cell.itemStatus.text = "Status: Unpublished"
dispatch_async(dispatch_get_main_queue(), {
@ -289,32 +370,29 @@ extension ItemTableViewController: UITableViewDataSource{
})
}else {
cell.itemStatus.text = "Status: Active"
}
if(!((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["areNetworksChosen"])!){
cell.networks.hidden = true
}else{
cell.selectedNetworks = []
dispatch_async(dispatch_get_main_queue(), {
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["ebay"])!){
cell.addNetwork("ebay_icon")
}
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["amazon"])!){
cell.addNetwork("amazon_icon")
}
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["etsy"])!){
cell.addNetwork("etsy_icon")
if(!((self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].networks["areNetworksChosen"])!){
cell.networks.hidden = true
}else{
cell.selectedNetworks = []
dispatch_async(dispatch_get_main_queue(), {
if(((self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].networks["ebay"])!){
cell.addNetwork("ebay_icon")
}
if(((self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].networks["amazon"])!){
cell.addNetwork("amazon_icon")
}
if(((self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].networks["etsy"])!){
cell.addNetwork("etsy_icon")
}
if(((self.tabBarController as? HomeViewController)!.draftListings[indexPath.row].networks["facebook"])!){
cell.addNetwork("facebook_icon")
}
cell.networks.reloadData()
}
if(((self.tabBarController as? HomeViewController)!.userListings[indexPath.row].networks["facebook"])!){
cell.addNetwork("facebook_icon")
}
cell.networks.reloadData()
})
})
}
}
}
@ -397,7 +475,13 @@ extension ItemTableViewController: UITableViewDataSource{
//view listing that is active or draft
if self.tableSegmentController.selectedSegmentIndex == 0 {
self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row]
//draft
if(indexPath.section == 1){
self.selectedListing = (self.tabBarController as? HomeViewController)?.draftListings[indexPath.row]
//active
}else{
self.selectedListing = (self.tabBarController as? HomeViewController)?.userListings[indexPath.row]
}
}
//view listing that is sold or unsold
@ -422,7 +506,11 @@ extension ItemTableViewController: UITableViewDataSource{
return "Sold"
}
}else{
return nil
if(section == 1){
return "Draft"
}else{
return "Active"
}
}
}
}

View File

@ -1292,7 +1292,7 @@
</tableViewCell>
</prototypes>
</tableView>
<segmentedControl hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" id="hyA-UD-JyK">
<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" id="hyA-UD-JyK">
<rect key="frame" x="127" y="73" width="121" height="29"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<rect key="contentStretch" x="0.0" y="0.0" width="1" height="0.25"/>
@ -1301,7 +1301,7 @@
<segment title="Unsold"/>
</segments>
<connections>
<action selector="historyFilterSegSwitch:" destination="Iwh-sn-a0Q" eventType="valueChanged" id="hlT-aZ-WSw"/>
<action selector="historyCurrentlyFilterSegSwitch:" destination="Iwh-sn-a0Q" eventType="valueChanged" id="DRB-3k-60I"/>
</connections>
</segmentedControl>
</subviews>
@ -1314,7 +1314,7 @@
<nil key="simulatedStatusBarMetrics"/>
<simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina47"/>
<connections>
<outlet property="historyFilter" destination="hyA-UD-JyK" id="ey9-bb-et0"/>
<outlet property="historyCurrentlyFilter" destination="hyA-UD-JyK" id="FLi-xQ-Bgr"/>
<outlet property="itemTable" destination="Thg-pb-lhN" id="u15-xE-hz6"/>
<outlet property="menuButton" destination="WjT-mo-4jm" id="1CT-vV-KLK"/>
<outlet property="tableSegmentController" destination="X2D-np-ma4" id="DbB-DF-wEF"/>