diff --git a/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate b/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate index 5f4cdb2..b1c7222 100644 Binary files a/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate and b/OTRS-Watch.xcodeproj/project.xcworkspace/xcuserdata/linnemann.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 80e6df7..52228e6 100644 --- a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -26,11 +26,11 @@ ignoreCount = "0" continueAfterRunningActions = "No" filePath = "OTRS-Watch/OTRS.swift" - timestampString = "503499740.022029" + timestampString = "503572546.154236" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "68" - endingLineNumber = "68" + startingLineNumber = "71" + endingLineNumber = "71" landmarkName = "reload(que:)" landmarkType = "7"> diff --git a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme index 0cc0118..5f80d6f 100644 --- a/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme +++ b/OTRS-Watch.xcodeproj/xcuserdata/linnemann.xcuserdatad/xcschemes/OTRS-Watch.xcscheme @@ -81,6 +81,12 @@ ReferencedContainer = "container:OTRS-Watch.xcodeproj"> + + + + diff --git a/OTRS-Watch/Extension/ViewControllerExtension.swift b/OTRS-Watch/Extension/ViewControllerExtension.swift index 9813097..b7885b7 100644 --- a/OTRS-Watch/Extension/ViewControllerExtension.swift +++ b/OTRS-Watch/Extension/ViewControllerExtension.swift @@ -52,4 +52,15 @@ extension ViewController: NSTableViewDataSource, NSTableViewDelegate { return nil } + + func tableViewSelectionDidChange(_ notification: Notification) { + updateViewAfterSelectionDidChange() + } + + private func updateViewAfterSelectionDidChange() { + let selectedRow = ticketTableView.selectedRow + + print(selectedRow) + } } + diff --git a/OTRS-Watch/OTRS.swift b/OTRS-Watch/OTRS.swift index 594ca8d..c449f0a 100644 --- a/OTRS-Watch/OTRS.swift +++ b/OTRS-Watch/OTRS.swift @@ -18,7 +18,7 @@ class OTRS { return Singleton.instance } - var baseURL : String = ""; + var baseURL : String = ""; // example base url: http://saeotrs01.sae.intra/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/ var username : String = ""; var password : String = ""; @@ -62,17 +62,15 @@ class OTRS { print(ticketIDs) for ticketID in ticketIDs { + cnt += 1; + let isLast = (cnt == ticketIDs.count) + if let tID:Int = Int(ticketID) { - self.fetch(ticket: tID, session: session) - cnt = cnt+1; + self.fetch(ticket: tID, session: session, isLast: isLast) + } } } - - let nc = NotificationCenter.default - nc.post(name:Notification.Name(rawValue:Constants.NOTIFICATION.TICKET.LIST.UPDATED), - object: nil, - userInfo: ["count":cnt]) } } catch { print("Error in JSONSerialization") @@ -83,7 +81,7 @@ class OTRS { task.resume() } - func fetch(ticket:Int, session:URLSession) { + func fetch(ticket:Int, session:URLSession, isLast:Bool) { let url = URL(string: buildURLForGettingTicketInfo(ticketID: ticket)) let task = session.dataTask(with: url!, completionHandler: { // see: https://developer.apple.com/swift/blog/?id=37 @@ -98,12 +96,19 @@ class OTRS { let ticket = try Ticket(source: ticketData) //print(ticket) + self.ticketDictionary.append(ticket) + let nc = NotificationCenter.default nc.post(name:Notification.Name(rawValue:Constants.NOTIFICATION.TICKET.IN), object: nil, userInfo: ["message":ticket.id, "ticket":ticket]) - self.ticketDictionary.append(ticket) + if isLast { + let nc = NotificationCenter.default + nc.post(name:Notification.Name(rawValue:Constants.NOTIFICATION.TICKET.LIST.UPDATED), + object: nil, + userInfo: ["count":self.ticketDictionary.count]) + } } catch SerializationError.missing(let marker) { print("Error in JSONSerialization for ticket #\(ticket) at \"\(marker)\"") @@ -128,7 +133,6 @@ class OTRS { } private func buildURLForGettingListByState(forState:String, queID:Int) -> String { - // example base url: http://saeotrs01.sae.intra/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/ return self.baseURL.appending("Ticket?UserLogin=\(self.username)&Password=\(self.password)&QueueIDs=\(queID)&States=\(forState)") } diff --git a/OTRS-Watch/ViewController.swift b/OTRS-Watch/ViewController.swift index 04d8071..08a3006 100644 --- a/OTRS-Watch/ViewController.swift +++ b/OTRS-Watch/ViewController.swift @@ -78,12 +78,13 @@ class ViewController: NSViewController { let _:Ticket = userInfo["ticket"] as? Ticket else { return } - - self.ticketTableView.reloadData() } func catchTicketsUpdated(notification:Notification) -> Void { - + DispatchQueue.main.async{ + print("\(OTRS.sharedInstance.ticketDictionary.count) tickets to be shown") + self.ticketTableView.reloadData() + } } }